如何在 nginx 上配置 cors?

Posted

技术标签:

【中文标题】如何在 nginx 上配置 cors?【英文标题】:how to configure cors on nginx? 【发布时间】:2021-10-28 08:55:01 【问题描述】:

我已经按照说明在 nginx 上配置了 cors,但是并没有解决问题。

#Disable IFRAME
add_header Access-Control-Allow-Origin: *;
add_header Access-Control-Allow-Methods: "GET, HEAD, POST, PUT, PATCH, DELETE";
add_header Access-Control-Expose-Headers: *;


add_header X-Frame-Options SAMEORIGIN;

#Prevent Cross-site scripting (XSS) attacks
add_header X-XSS-Protection "1; mode=block";

#Prevent MIME-sniffing
add_header X-Content-Type-Options nosniff;

结果还没有确定:

请帮帮我!

【问题讨论】:

【参考方案1】:

我可以建议一些小事来解决您当前的问题:

    标题“Access-Control-Allow-Origin”有多个条目。请删除所有额外内容。 标题“Access-Control-Allow-Methods”的条目缺少冒号 (:) 和尾随逗号 (,) 字符。请修复它。 确保 nginx 服务器重新启动或停止/启动。

【讨论】:

谢谢你,我已经按照你的建议改正了,但还是没有解决问题:( 我快速参考了一些关于如何在 nginx 中启用 CORS 的站点,并注意到在 ngnix 配置文件中设置它们时没有冒号分隔符 (:)。冒号 (:) 仅在他们试图证明设置已成功应用于请求标头部分时出现。 您好 Hamid Se,感谢您的回答我修改了代码如下:jsfiddle.net/b68oza9u 但它仍然无法工作 请查看并相应调整。 enable-cors.org/server_nginx.html 根据上面给定的屏幕截图,我假设您正在运行具有 2 个虚拟主机的单个 nginx 实例作为网络服务器(而不是代理); 1 用于端口 80 的 api 和 1 用于端口 9013 的客户端。我希望你已经在正确的服务器配置中设置了 cors 标头,它位于 api。

以上是关于如何在 nginx 上配置 cors?的主要内容,如果未能解决你的问题,请参考以下文章

Nginx解决跨域配置(Cors),支持白名单

使用 NGINX 和 AWS Elastic Beanstalk 配置 CORS

如何将 CORS(跨域策略)添加到 NGINX 中的所有域?

CORS 配置 Flask、Angular 和 NGINX

api调用获取失败,CORS,nginx已配置

如何在 GKE 中通过入口启用 Cors