在網路上找到了這個方法:
$.ajax({
<code> //请求类型,这里为POST type: 'POST', //你要请求的api的URL url: url , //是否使用缓存 cache:false, //数据类型,这里我用的是json dataType: "json", //必要的时候需要用JSON.stringify() 将JSON对象转换成字符串 data: JSON.strigify({key:value}), //data: {key:value}, //添加额外的请求头 headers : {'Access-Control-Allow-Origin':'*'}, //请求成功的回调函数 success: function(data){ //函数参数 "data" 为请求成功服务端返回的数据</code>
},
});
但提示:
Request header field Access-Control-Allow-Origin is not allowed by Access-Control-Allow-Headers in preflight response.
已經在php程式碼裡吧Headers的值設定為*了,還是報錯,有沒有解決方法?
在網路上找到了這個方法:
$.ajax({
<code> //请求类型,这里为POST type: 'POST', //你要请求的api的URL url: url , //是否使用缓存 cache:false, //数据类型,这里我用的是json dataType: "json", //必要的时候需要用JSON.stringify() 将JSON对象转换成字符串 data: JSON.strigify({key:value}), //data: {key:value}, //添加额外的请求头 headers : {'Access-Control-Allow-Origin':'*'}, //请求成功的回调函数 success: function(data){ //函数参数 "data" 为请求成功服务端返回的数据</code>
},
});
但提示:
Request header field Access-Control-Allow-Origin is not allowed by Access-Control-Allow-Headers in preflight response.
已經在php程式碼裡吧Headers的值設定為*了,還是報錯,有沒有解決方法?
首先我們談談為什麼會出現preflight
問題,那是因為你的請求已經不是一個「簡單請求」了,跨域問題中,常把複合特定條件的一些請求稱為簡單請求,而滿足「簡單請求」的條件是這樣的:
請求類型必須是GET
,POST
,HEAD
三者中的一種
請求頭(Header)中僅可以包含:
Accept
Accept Language
Content Language
Last Event ID
Content Type:僅接受application/x-www-form-urlencoded,multipart/form-data,text/plain
你的問題是,顯然,你增加了一個header Access-Control-Allow-Origin
,導致請求變得「不簡單」了。當請求不簡單時,瀏覽器處於安全原因,會先發送一個所謂的preflight
請求,方法為OPTIONS
關於跨域的更多內容,推薦看建構public APIs與CORS
你的問題,我理解,去掉那個多餘的header
應該就好了