跨域實現方式
阿新 • • 發佈:2017-12-08
不支持 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服務器創建一個代理,訪問不同域的資源
跨域實現方式