nginx跨域问题

使用CPP实现了后端http服务器,但是在和前端联调时发现无法正常使用,前端反馈遇到了跨域的问题。

百度跨域的相关概念之后,了解不少CORS的知识,总结一下就是前端发来的http请求封装了一层,原始的http请求被处理成了OPTIONS方法的请求,真实的请求方法藏在了Access-Control-Request-Method字段中。

但是目前实现的孱弱的http服务器只能处理直白的GET,POST请求,所以查找相关资料之后,知道nginx可以处理跨域的问题。

开始学习nginx的相关知识,了解到nginx主要是配置文件配好即可,折腾了一下午之后,终于弄通了,现把成果记录下来。

server{
		listen 8000;
		location /api/{
            #处理OPTIONS的请求
			if ($request_method = 'OPTIONS') {
				add_header Access-Control-Allow-Origin $http_origin always; 
				add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS always;
				add_header Access-Control-Allow-Credentials true always;
				add_header Access-Control-Allow-Headers DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,x-auth-token always;
				add_header Access-Control-Max-Age 1728000 always;
				return 204;
			}
			 if ($request_method = 'POST') {
			 	proxy_pass http://127.0.0.1:8088;
                add_header 'Access-Control-Allow-Origin' '*';
                add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
                add_header 'Access-Control-Allow-Headers' '*';
             }
             if ($request_method = 'GET') {
                #正常请求转发到服务端口
			 	proxy_pass http://127.0.0.1:8088;
                add_header 'Access-Control-Allow-Origin' '*';
                add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
                add_header 'Access-Control-Allow-Headers' '*';
             }
		}
	}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在docker中配置nginx解决跨域问题的方法如下:首先,在docker中安装nginx时,默认的html路径是/usr/share/nginx。\[2\]在创建nginx容器之前,可以更改这个路径,但一旦创建并构成映射关系后,就不能再更改了,否则会导致404、403等错误。接下来,我们需要将创建的nginx必需文件与docker安装nginx的配置文件一一对应起来,这样可以方便地在外挂文件中修改nginx的配置。\[3\]通过这种映射关系,docker中的nginx配置文件会自动更新。这样,我们就可以在外挂文件中修改nginx的配置,解决跨域问题。 #### 引用[.reference_title] - *1* [nginx跨域配置、使用,docker部署nginx全流程(实测简单完整无坑)](https://blog.csdn.net/soulwirter/article/details/126985552)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [docker配置nginx外挂文件,使用nginx部署vue并 解决前后端跨域问题](https://blog.csdn.net/qq_37591637/article/details/112836688)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值