什么是JS跨域訪問

一、什么是跨域

跨域是指從一個(gè)域名的網(wǎng)頁去請求另一個(gè)域名的資源。比如:A上的頁面獲取B上的資源。

概念:只要協(xié)議、主機(jī)、端口有任何一個(gè)不同,都被當(dāng)作是不同的域。

出于安全考慮,瀏覽器會限制從腳本內(nèi)發(fā)起的跨域HTTP請求。

二、如何實(shí)現(xiàn)跨域訪問

解決方案:

  • JSONP
  • CORS
  • postMessage等

比較常用的是CORS(跨域資源共享)

跨域資源共享( CORS )機(jī)制允許 Web 應(yīng)用服務(wù)器進(jìn)行跨域訪問控制,從而使跨域數(shù)據(jù)傳輸?shù)靡园踩M(jìn)行。瀏覽器支持在 API 容器中(例如 XMLHttpRequest 或 Fetch )使用 CORS,以降低跨域 HTTP 請求所帶來的風(fēng)險(xiǎn)。

服務(wù)器端對于CORS的支持,主要就是通過前后端HTTP HEADER設(shè)置Access-Control-Allow-Origin來進(jìn)行的。如果瀏覽器檢測到相應(yīng)的設(shè)置,就可以允許Ajax進(jìn)行跨域的訪問。

1. 簡單模式(請求方法是 GET / POST / HEAD)

  • 目標(biāo)服務(wù)器在響應(yīng)頭(HTTP HEADER)里添加
    Access-Control-Origin:http://xxx.com
    瀏覽器就會允許http://xxx.com跨域。

  • 如果添加通配符*Access-Control-Origin:*瀏覽器就會允許所有其他網(wǎng)站跨域。

2. 復(fù)雜模式(請求方法是PUT / DELETE / CONNECT / OPTIONS / TRACE / PATCH)

目標(biāo)服務(wù)器在響應(yīng)頭(HTTP HEADER)里添加

Access-Control-Origin: http://xxx.com
Access-Control-Methods: GET, POST, HEAD, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH

瀏覽器會發(fā)兩次請求,第一次是OPTIONS請求,詢問目標(biāo)服務(wù)器是否允許PUT/PATCH...,如果允許則發(fā)真正的請求。

參考鏈接:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容