cors跨域資源共享方法
阿新 • • 發佈:2019-01-08
cors是一個服務端和客戶端協作宣告的方式來確保請求的安全性。
- 服務端在HTTP請求頭增加一些列的請求頭資訊(例如Access-Control-Allow-Orign等),說明哪些域的請求可以接受,或哪些型別的請求可以接受。
- 客戶端在發起請求時,也必須在請求頭中宣告自己的源(Orign),否則伺服器將不予處理。如果客戶端不作宣告,請求可能會被瀏覽器阻止,到不了伺服器端。HTTP請求到達伺服器之後會與服務端宣告的域進行比較,只有同域的請求才做處理。
客戶端程式碼:
//原聲js ajax請求
var xhr = new XMLHttpRequest();
xhr.open("post" , "http://b.example.com/Test.ashx", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
//關鍵步驟:***在請求頭宣告請求源***
xhr.setRequestHeader("Origin", "http://a.example.com");
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
var responseText = xhr.responseText;
console.info(responseText);
}
}
xhr.send();
服務端程式碼:
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
// 宣告接受所有域的請求
context.Response.AddHeader("Access-Control-Allow-Origin", "*");
context.Response.Write("Hello World");
}
public bool IsReusable
{
get
{
return false;
}
}
}