首页 > 系统相关 >Nginx 支持 CORS

Nginx 支持 CORS

时间:2024-05-18 19:40:52浏览次数:25  
标签:Control domain header 支持 Access Nginx https CORS com

Nginx 支持 CORS

先说下最终增加的配置:

add_header Access-Control-Allow-Origin https://a.domain.com always;
add_header Access-Control-Allow-Headers 'content-type,authorization';
add_header Access-Control-Max-Age 3600;
if ($request_method = 'OPTIONS') {
    return 204;
}

Web 项目(a.domain.com​)和后端接口(b.domain.com​)调试时遇到:

Access to XMLHttpRequest at 'https://b.domain.com/v1/auth/login' from origin 'https://a.domain.com' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

在接口 b.domain.com​ 的 Nginx 配置中增加,(需要加上 always​ 否则没什么效果):

# add_header Access-Control-Allow-Origin https://a.domain.com;
add_header Access-Control-Allow-Origin https://a.domain.com always;

增加配置信息后,错误信息变成了:

Access to XMLHttpRequest at 'https://b.domain.com/v1/auth/login' from origin 'https://a.domain.com' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.

因为跨域的时候,会先发请一个 OPTIONS​ 的预检请求,这个请求响应成功之后才会发送实际的请求,所以对于这个请求要给出正确的响应:

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

增加配置后,错误信息变成了:

Access to XMLHttpRequest at 'https://b.domain.com/v1/auth/login' from origin 'https://a.domain.com' has been blocked by CORS policy: Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight response.

增加配置信息:

add_header Access-Control-Allow-Headers 'content-type,authorization';

现在可以正常发送跨域的请求了。

不过,每个请求发送前,都会对应发送一个预检请求,再调整下配置:

add_header Access-Control-Max-Age 3600;

增加这个配置,告知客户端允许的请求头可以缓存多久,在缓存有效期内不再发送预检请求。

参考文章:

你知道为何跨域中会发送 options 请求?

Nginx 轻松搞定跨域问题。。。

标签:Control,domain,header,支持,Access,Nginx,https,CORS,com
From: https://www.cnblogs.com/zhpj/p/18199686/nginx-support-cos-z2aakcg

相关文章

  • Docker 部署Nginx
    1、运行容器dockerrun--namenginx-dnginx2、创建目录mkdir/opt/sevnceWorkplace/docker/nginxmkdir/opt/sevnceWorkplace/docker/nginx/htmlmkdir/opt/sevnceWorkplace/docker/nginx/logs3、从容器中复制要挂载的文件dockercpnginx:/etc/nginx/conf.d//op......
  • 一款基于C#开发的通讯调试工具(支持Modbus RTU、MQTT调试)
    前言今天大姚给大家分享一款基于C#、WPF、Prism、MaterialDesign、HandyControl开发的通讯调试工具(支持ModbusRTU、MQTT调试,界面色彩丰富):Wu.CommTool。工具特点工具界面色彩丰富。支持ModbusRTU、MQTT服务器、MQTT客户端。ModbusRTU自动解析数据帧。智能防粘包,速度快也......
  • Mono 支持LoongArch架构
    近期,著名的.NET开源社区Mono正式支持LoongArch(龙架构),目前LoongArch64架构已出现在.NET社区主干分支上。详细内容可以跟踪https://github.com/mono/mono/issues/21381,一共分5部分提交:Mono是一个开源的.NET框架实现,它允许开发者在非Windows平台上运行.NET应用程序。Mono项目是由X......
  • 一次nginx文件打开数的问题排查处理
     现象:nginx域名配置合并之后,发现consul-template无法完成nginx重载,然后发现需要重启nginx,才能让配置生效。注意:下次哪个服务有报错,就看重启时所有日志输出,各种情况日志输出。不要忽略细节。很多时候其实已经看到了问题,却没有深入查看问题。  查看进程最大打开文件个数#ca......
  • 【吐槽】今天才发现PyCharm不支持对Python脚本进行块注释
    在PyCharm中对Python脚本Ctrl+Shift+/进行块注释不起作用,然后使用OpenArk64查看是否热键占用冲突,没有发现其他占用。然后发现PyCharm中Code菜单项下的选项CommentwithBlockComment是灰色的。又查了下,最后发现jetbrains官方帮助文档中已说明PyCharm不支持对Python脚本进行......
  • show-menu-by-longpress 企微群聊活码不支持
    微信小程序image的show-menu-by-longpress设置为true,并不支持识别 企业微信群聊活码 参考:https://developers.weixin.qq.com/community/develop/doc/0002e8177f09b82ca5f00d4c961c00https://developers.weixin.qq.com/miniprogram/dev/component/image.html#%E6%94%AF%E......
  • Nginx-05-nginx 反向代理是什么?windows 下如何配置使用 nginx
    nginx反向代理是什么?nginx反向代理是一种网络服务器架构模式,它通过将客户端的请求转发到后端服务器,来提供负载均衡、高可用性、安全性等功能。在这种架构中,nginx作为反向代理服务器,接收来自客户端的请求,并将请求转发到后端服务器上。在反向代理架构中,客户端不直接访问后端服......
  • 配置nginx支持
    langchain-chatchat使用了streamlit,打算前置一个ng做鉴权,该框架使用了websocket,也用/作为url,ng(openresty)的配置如下:#nginx.conf--docker-openresty##Thisfileisinstalledto:#`/usr/local/openresty/nginx/conf/nginx.conf`#andisthefileloadedbynginxa......
  • 本机使用 Nginx 代理域名
    为了使用Nginx代理一个域名,您需要在Nginx配置文件中设置一个服务器块(serverblock),并指定该域名以及代理的配置。以下是一个基本的配置示例:http{server{listen80;#监听的端口server_nameexample.com;#要代理的域名location/{......
  • 本机使用 Nginx 代理域名
    为了使用Nginx代理一个域名,您需要在Nginx配置文件中设置一个服务器块(serverblock),并指定该域名以及代理的配置。以下是一个基本的配置示例:http{server{listen80;#监听的端口server_nameexample.com;#要代理的域名location/{......