解決跨域調用服務並設置headers 主要的解決方法需要通過服務器端設置響應頭、正確響應options請求,正確設置 JavaScript端需要設置的headers信息 方能實現。
1.什么是跨域?
跨域:指的是瀏覽器不能執行其他網站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對javascript施加的安全限制。
例如:a頁面想獲取b頁面資源,如果a、b頁面的協議、域名、端口、子域名不同,所進行的訪問行動都是跨域的,而瀏覽器為了安全問題一般都限制了跨域訪問,也就是不允許跨域請求資源。注意:跨域限制訪問,其實是瀏覽器的限制。理解這一點很重要!!!
同源策略:是指協議,域名,端口都要相同,其中有一個不同都會產生跨域;
解決辦法
方法一 服務端設置響應頭
header('Access-Control-Allow-Origin:*'); //支持全域名訪問,不安全,部署后需要固定限制為客戶端網址
header('Access-Control-Allow-Methods:POST,GET,OPTIONS,DELETE'); //支持的http 動作
header('Access-Control-Allow-Headers:x-requested-with,content-type'); //響應頭 請按照自己需求添加。
方法二:一頓百度,可以用jsonp解決,具體方法步驟如下
(function($){
$.ajax({
type: "post",
url: "http://localhost:8022/test.json",
data: $.toJSON(userData),
dataType: 'jsonp',
jsonpCallback:'callback',
success: function(result) {
alert(result);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest.status);
alert(XMLHttpRequest.readyState);
alert(textStatus);
}
});
})(jQuery)