1. 程式人生 > 其它 >ajax跨域(跨源)方案之CORS

ajax跨域(跨源)方案之CORS

ajax跨域(跨源)方案:後端授權[CORS],jsonp,服務端代理

  CORS是一個W3C標準,全稱是"跨域資源共享",它允許瀏覽器向跨源的後端伺服器發出ajax請求,從而克服了AJAX只能同源使用的限制。
  實現CORS主要依靠<mark>後端伺服器中響應資料中設定響應頭資訊返回</mark>的。

  

response = new Response()
response .set_header("Access-Control-Allow-Origin","http://localhost:63342")
return response;

  

// 在響應行資訊裡面設定以下內容:
Access-Control-Allow-Origin: ajax所在的域名地址
Access-Control-Allow-Origin: www.oldboy.cn  // 表示只允許www.oldboy.cn域名的客戶端的ajax跨域訪問
// * 表示任意源,表示允許任意源下的客戶端的ajax都可以訪問當前服務端資訊
Access-Control-Allow-Origin: *

  

總結:

0. 同源策略:瀏覽器的一種保護使用者資料的一種安全機制。
   瀏覽器會限制ajax不能跨源訪問其他源的資料地址。
   同源:判斷兩個通訊的地址之間,是否協議,域名[IP],埠一致。
   
   ajax:  http://127.0.0.1/index.html
   api資料介面:  http://localhost/index
   
   這兩個是同源麼?不是同源的。是否同源的判斷依據不會根據電腦來判斷,而是通過協議、域名、埠的字串是否來判斷。
   
1. ajax預設情況下會受到同源策略的影響,一旦受到影響會報錯誤如下:
     No 'Access-Control-Allow-Origin' header is present on the requested resource

2. 解決ajax只能同源訪問資料介面的方式:
   1. CORS,跨域資源共享,在服務端的響應行中設定:
      Access-Control-Allow-Origin: 允許訪問的域名地址
   2. jsonp
   3. 是否服務端代理