1. 程式人生 > >跨域實現方式

跨域實現方式

不支持 tro get請求 必須 標簽 發送 方式 頁面 服務

同源:同協議、端口、域名(三者必須全部相同)

同源策略:瀏覽器不允許當前頁面向非同源站點發送請求(防止用戶信息被惡意站點獲取的基本措施)

跨域請求:當前站點向某些非同源站點進行請求

跨域請求方式:

一、服務器端允許跨域

服務器端設置響應頭Access-Control-Allow-Origin: *

可以直接進行請求

二、JSONP(只支持GET請求)

iframe、img、style、script等元素的src屬性擁有可以直接向不同域請求資源的特性

jsonp正是利用script標簽從此進行跨域請求

1     <script>
2        function hello(res){
3 console.log(res) 4 } 5 </script> 6 <script src=" https://cnodejs.org/api/v1/topic/5433d5e4e737cbe96dcef312?callback=hello"></script>
// 當前鏈接不支持JSONP,所以會報錯

實現機制:

1.首先,服務器得支持JSON格式,返回的數據是一個由回調函數包裹的數據 hello(data)

2.當前站點需要實現hello方法,在資源請求完成前聲明方法

三、CORS

需要瀏覽器和服務器同時支持,需要服務器提供CORS接口,瀏覽器根據AJAX請求自動添加一些附加的頭信息,有時會多出一次附加請求(預檢preflight)

四、代理跨域

通過同域名下的web服務器創建一個代理,訪問不同域的資源

跨域實現方式