看了看網(wǎng)上關(guān)于CROS的,大概明白非簡單請(qǐng)求的流程。先Options請(qǐng)求,然后協(xié)商成功后,在正式請(qǐng)求。
怎么搞都搞不定。。。做一次伸手黨了我是在header里自定義了兩個(gè)值做校驗(yàn)。
瀏覽器就報(bào)下面的跨域問題。。。
已攔截跨源請(qǐng)求:同源策略禁止讀取位于 http://111.231.56.227:12084/monitor/detailMission 的遠(yuǎn)程資源。(原因:來自 CORS 預(yù)檢通道的 CORS 頭 'Access-Control-Allow-Headers' 的令牌 'appid' 無效)。
JS代碼
var form = new FormData();
form.append("mission_id", "245d14793c0e4f4fa936755cd558841a");
var settings = {
"async": true,
"crossDomain": true,
"url": "http://111.231.56.227:12084/monitor/detailMission",
"method": "POST",
"headers": {
"appId": "0000815",
"appSecret": "cbd88ab8822fa",
},
"processData": false,
"contentType": false,
"mimeType": "multipart/form-data",
"data": form
};
$.ajax(settings).done(function (response) {
console.log(response);
});
PHP Action
header('Content-type: application/json');
header('Access-Control-Allow-Origin:*');
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS'){
header('Access-Control-Allow-Methods:POST');
header('Access-Control-Allow-Headers:*');
header('Access-Control-Mas-Age:3600');
$this->returnSuccess();
}
$this->checkAppIdAndSecret();
$id = $this->getPost('mission_id');
大家說headers不能用*,因此改了一下
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, appid, appSecret");
Methods也加上OPTIOHS,GET,PUT啥的了換了個(gè)報(bào)錯(cuò)
4 回答

慕勒3428872
TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超6個(gè)贊
Support for wildcards in the Access-Control-Allow-Headers header was added to the living standard only in May 2016, so it may not be supported by all browsers.
Access-Control-Allow-Headers
不接受通配符。
cors-access-control-allow-headers-wildcard-being-ignored
補(bǔ)充
注意拼寫錯(cuò)誤,響應(yīng)允許的是appSecert
,請(qǐng)求發(fā)送的是appSecret
。

天涯盡頭無女友
TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超9個(gè)贊
你后端header 沒有允許 appid, appSecret。
PHP 添加
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, appid, appSecret");
- 4 回答
- 0 關(guān)注
- 1031 瀏覽
添加回答
舉報(bào)
0/150
提交
取消