Nginx跨域设置无效,同环境一个正常一个不起作用?

A服务器Nginx1.8,宝塔面板7.01,前端vue、axios

B服务器Nginx1.9,宝塔面板7.02,前端vue、axios

A服务器Nginx设置

add_header Access-Control-Allow-Origin * always;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS' always;
add_header Access-Control-Allow-Headers * always;

B服务器同样设置却不起作用

360截图20191030115752938.jpg

微信图片_20191030134719.png

阅读 4.3k
2 个回答

尽量别用通配符,不是所有情况下都支持通配符的,直接返回请求者所在域就好了,nginx 里提供了环境变量 $origin 表示这个值。

add_header 'Access-Control-Allow-Origin' $origin;
add_header 'Access-Control-Allow-Methods' #看着加;
add_header 'Access-Control-Allow-Headers' #看着加;

if ($request_method = 'OPTIONS') {
    return 204;
}

另外截图没截全,贴一下出错的响应头部分。

安全起见不建议把跨域设置配置在服务器的nginx配置文件中,建议把add_header()放到接口请求的代码层里。至于这三行就不说了,搜索随便搜都能出来。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题