nginx配置有重写跳转时如何同时解决跨域问题?

发布于 2022-09-12 23:32:06 字数 916 浏览 30 评论 0

  • 访问一个域名比如 https://test.com,我在nginx中将它设置成跳转到 https://www.test.com,nginx配置如下:
server {
  ...
  server_name test.com ...
  # 跳转配置
  if ($host != 'www.test.com' ) { 
     rewrite ^/(.*)$ https://www.test.com/$1 permanent;
  }
  # location中的跨域配置
  location / {
    if ($request_method = "OPTIONS") {    
       #... 省略
    }
  }
}

与此同时,我在www.test.com中的index页面有一个ajax接口请求 https://api.test.com/v1

  • 此时我访问test.comwww.test.com时,控制台都会报一个这样的错误:
    locked by CORS policy: Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request.
    告诉我预检不允许跳转

我将重写的跳转配置删除,果然可以正常跨域。

  • 实际情况中,我们还可能遇到各种各样的重写跳转,比如访问http跳转到https,那么此时我该如何来解决跨域问题呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

恋你朝朝暮暮 2022-09-19 23:32:06

https://developer.mozilla.org...

在nginx配置里面加上 这个头,头的值为 *或者具体的域名。

也可以在api接口的响应头中加上。效果一样。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文