報錯:
Access to fetch at ‘https://www.baidu.com/’ from origin ‘http://www.baidu.com’ has been blocked by CORS policy: The ‘Access-Control-Allow-Origin’ header contains multiple values ‘*, *’, but only one is allowed. Have the server send the header with a valid value, or, if an opaque response serves your needs, set the request’s mode to ‘no-cors’ to fetch the resource with CORS disabled.
已攔截跨源請求:同源政策禁止讀取位于 http*****的遠端資源。(原因:CORS 頭缺少 ‘Access-Control-Allow-Origin’)。
CORS一般不需要在浏覽器配置,浏覽器發現這次跨源AJAX請求是簡單請求,就自動在頭資訊之中,添加一個Origin字段,Origin字段用來說明,本次請求來自哪個源(協定 + 域名 + 端口)。
伺服器根據這個值,決定是否同意這次請求,也就是說伺服器會存在一份白名單,說明哪一些源是可以被允許的,而Access-Control-Allow-Origin就是包含在回應頭裡的白名單。
浏覽器發現,這個回應的頭資訊沒有包含Access-Control-Allow-Origin字段,就知道出錯了,進而抛出一個錯誤,也就是你遇到的提示,是傳回結果被浏覽器攔截了,而不是請求發不出。
是以你需要的是在伺服器上配置這個白名單,而不是更改頁面
解決辦法1:
var url='http://localhost:8080/WorkGroupManagment/open/getGroupById"
+"?id=1&callback=?';
$.ajax({
url:url,
dataType:'jsonp',
processData: false,
type:'get',
success:function(data){
alert(data.name);
},
error:function(XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest.status);
alert(XMLHttpRequest.readyState);
alert(textStatus);
}});
解決辦法2:
var url="http://localhost:8080/WorkGroupManagment/open/getGroupById"
+"?id=1&callback=?";
$.jsonp({
"url": url,
"success": function(data) {
$("#current-group").text("目前工作組:"+data.result.name);
},
"error": function(d,msg) {
alert("Could not find user "+msg);
}
});
解決辦法3
被請求頁面加上下面代碼,最好content填寫域名
解決辦法4,在請求控制器加上
header(“Access-Control-Allow-Origin: *”);
解決辦法5,修改nginx配置檔案
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET,POST';
add_header 'Access-Control-Allow-Headers' 'x-requested-with,content-type';