由于前端js请求数据会有一个异步问题
nginx上加好Access-Control-Allow-Origin头部,跨域依旧失败的问题
解决办法,nginx文档也已说明,只需要在指令后面加上“always”参数即可。
以下是配置代码
server{
listen 80;
server_name your_server_name; #你的serverName
root /usr/share/nginx/html;
index index.html;
location / {
add_header Access-Control-Allow-Origin "*" always;
add_header Access-Control-Allow-Methods "GET,POST,DELETE" always;
add_header Access-Control-Allow-Header "Content-Type" always;
}
location ^~ /api {
proxy_pass http://cctvksh5ca.v.xx.com/;
}
location ^~ /ts/ {
proxy_pass http://121.31.30.xx:85/;
add_header Access-Control-Allow-Origin "*" always;
add_header Access-Control-Allow-Methods "GET,POST,DELETE" always;
add_header Access-Control-Allow-Header "Content-Type" always;
}
}
在nginx中配置proxy_pass时,当在后面的url加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路径部分也给代理走。
在nginx中配置proxy_pass时,如果是按照^~匹配路径时,要注意proxy_pass后的url最后的/,当加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路径部分也给代理走。
首先是location进行的是模糊匹配
``1)没有“/”时,location /abc/def可以匹配/abc/defghi请求,也可以匹配/abc/def/ghi等
``2)而有“/”时,location /abc/def/不能匹配/abc/defghi请求,只能匹配/abc/def/anything这样的请求
下面2种情况分别用http://192.168.1.1/proxy/test.html 进行访问。
1、proxy_pass后有 / 绝对路径 不带走 location 路径
location /proxy/ {
proxy_pass http://127.0.0.1:81/;
}
结论:会被代理到http://127.0.0.1:81/test.html 这个url
扩展1、
location /proxy/ {
proxy_pass http://127.0.0.1:81/ftlynx/;
}
结论:会被代理到http://127.0.0.1:81/ftlynx/test.html 这个url。
扩展2、
location /proxy/ {
proxy_pass http://127.0.0.1:81/ftlynx;
}
结论:会被代理到http://127.0.0.1:81/ftlynxtest.html 这个url
2、proxy_pass 后没有 / ,带走location路径
location /proxy/ {
proxy_pass http://127.0.0.1:81;
}
结论:会被代理到http://127.0.0.1:81/proxy/test.html 这个url