ajax跨域(跨源)方案之CORS
阿新 • • 發佈:2021-10-01
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. 是否服務端代理