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

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

WBOY
發布: 2016-08-04 09:20:58
原創
1243 人瀏覽過

在網路上找到了這個方法:
$.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應該就好了

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板