首頁  >  文章  >  後端開發  >  javascript - jquery用post方法請求數據,怎麼在header裡傳參?

javascript - jquery用post方法請求數據,怎麼在header裡傳參?

WBOY
WBOY原創
2016-08-04 09:20:581175瀏覽

在網路上找到了這個方法:
$.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問題,那是因為你的請求已經不是一個「簡單請求」了,跨域問題中,常把複合特定條件的一些請求稱為簡單請求,而滿足「簡單請求」的條件是這樣的:

請求類型必須是GETPOSTHEAD三者中的一種
請求頭(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應該就好了

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn