Ajax跨域訪問,options預檢請求無法通過后臺權限,導致回傳403,500等錯誤,

網上找了很多,都是后臺直接讓options請求pass掉。這就讓人很難受,就像是,前輩門為了讓你住的安全,給你做了個門,結果你不知道鑰匙,所以把門拆了。
所以想問一下大佬,是否有知道“鑰匙”的,求告知,萬分感謝
uj5u.com熱心網友回復:
可以參考一下CROS、JSONP不過不建議JSONP,請求方式只能是get
uj5u.com熱心網友回復:
options 出現的情況是 請求跨域 并且帶了自定義的header;如果說不想讓后端修改原先的代碼或者說后端是第三方介面無法修改;那么只能在自己的服務器上搭建代理服務器;uj5u.com熱心網友回復:
跨域的話,一般非框架開發建議使用nginx代理跨域(我博客文章有),還有就是webpack框架推薦自帶的proxy(也有)。jsonp本身就是用于臨時的get的請求,有很大的局限性,不適合開發uj5u.com熱心網友回復:
設定Nginx配置針對Options做單獨處理:server {
listen 80;
server_name xxx.com;
location /xxx-web/papi {
add_header 'Access-Control-Allow-Origin' $http_origin;
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,web-token,app-token,Authorization,Accept,Origin,Keep-Alive,User-Agent,X-Mx-ReqToken,X-Data-Type,X-Auth-Token,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain; charset=utf-8';
add_header 'Content-Length' 0;
return 204;
}
root html;
index index.html index.htm;
proxy_pass http://127.0.0.1:7071;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 5;
}
location / {
root /var/www/xxx/wechat/webroot;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
uj5u.com熱心網友回復:
請問最后怎么解決的???轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/283755.html
標籤:Ajax
