nginx设置add_header失效 配置cors跨域失效无效的解决方案

这篇具有很好参考价值的文章主要介绍了nginx设置add_header失效 配置cors跨域失效无效的解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

希望对大家有帮助,有用的话记得点个赞评个论,让俺知道这个法子可以帮助到大家哟!(虽然我这个法子很野)

起因

最近在完成一个项目,后端API地址和前端地址不一致,这就涉及到了跨域的问题。

由于服务端加了一层Nginx作为反代,所以很自然的想到要去.conf配置文件中加几句add_header


location XXXX {
    # 此处省略一万字
    #CORS 配置
    add_header 'Access-Control-Allow-Origin' '*';
    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE';
    #是否允许cookie传输
    add_header 'Access-Control-Allow-Credentials' 'true';
    add_header 'Access-Control-Allow-Headers' 'Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,X-Data-Type,X-Requested-With,X-Data-Type,X-Auth-Token';
    #针对浏览器的options预请求直接返回200,否则会被403 forbidden--invalie CORS request
    if ( $request_method = 'OPTIONS' ) { 
		  return 200;
	  } 
    # 此处省略一万字
}

但是,但是!在保存完配置,重启Nginx之后,发现自己加上来的add_header语句并没有起作用!

翻了很多资料,有说是继承问题,但是我排查了老一阵子,也没发现哪儿有继承问题。我自己用宝塔部署的,那里面配置文件一层层include的看着就烦!晕!一眨眼一夜没了!

不过,在一番瞎尝试之中,偶然发现了一个可行的方案——

我自己试着行的解决方案

那就是——套一层if语句!

更改后的配置如下:

    set $enable_cors 0;
    if ( $enable_cors = 0 )
    {
    #CORS 配置
    add_header 'Access-Control-Allow-Origin' '*';
  	add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE';
	#是否允许cookie传输
    add_header 'Access-Control-Allow-Credentials' 'true';
	add_header 'Access-Control-Allow-Headers' 'Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,X-Data-Type,X-Requested-With,X-Data-Type,X-Auth-Token';
    }
    
    
    #针对浏览器的options预请求直接返回200,否则会被403 forbidden--invalie CORS request
    if ( $request_method = 'OPTIONS' ) { 
    #CORS 配置
    add_header 'Access-Control-Allow-Origin' '*';
  	add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE';
	 #是否允许cookie传输
    add_header 'Access-Control-Allow-Credentials' 'true';
	add_header 'Access-Control-Allow-Headers' 'Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,X-Data-Type,X-Requested-With,X-Data-Type,X-Auth-Token';
	return 200;
	} 

上面的这段nginx配置,记得贴到对应的location下面哟!
加入之后,一定记得重启下Nginx使得配置生效喔!

实测可行:

nginx add header无效,nginx,前端,http文章来源地址https://www.toymoban.com/news/detail-520970.html

到了这里,关于nginx设置add_header失效 配置cors跨域失效无效的解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决系统开发中的跨域问题:CORS、JSONP、Nginx

    本博客配套的源码在这里 最近我在做一个系统的全栈开发,遇到了这样一个问题。 首先,我的前端是一个来自百度的开源框架——Amis,它封装自React.js,基于JSON配置。我下载了Amis提供的SDK文件夹,并进行了代码开发。但是我在部署整个系统的时候遇到了跨域问题。原因是,

    2024年01月20日
    浏览(44)
  • axios请求解决跨域问题has been blocked by CORS policy: No ‘Access-Control-Allow-Origin‘ header is

    我们在Vue实现axios请求时,出现跨域问题,我们有两种解决方案(当然我们的请求路径和axios都是没问题的)    第一种加上CrossOrigin注解 第二种写一个config配置类 希望能帮到各位,

    2024年02月12日
    浏览(30)
  • 【Ajax】笔记-设置CORS响应头实现跨域

    CORS CORS(Cross-Origin Resource Sharing),跨域资源共享。CORS是官方的跨域解决方案,它的特点是不需要在客户端做任何特殊的操作,完全在服务器中进行处理,支持get和post请求。跨域资源共享标准新增了一组HTTP首部字段,允许服务器声明哪些源站通过浏览器有权限访问哪些资源 COR

    2024年02月14日
    浏览(31)
  • 解决跨域报错问题&Access to XMLHttpRequest at ‘xxx‘ from origin ‘xxx‘ has been blocked by CORs policy.header

    我们在完成前后端分离项目时(Vue+SpringBoot),有很多人会遇到跨域问题(CORS)。 跨域问题: 指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制。 同源策略: 是指协议,域名,端口都要相同,其中有一个不同都会

    2024年02月03日
    浏览(37)
  • spring 2.7.14 cors 设置 allowedOrigins(“*“)通配符 失效怎么解决

    失效代码: 失效原因:  解决方法: 将allowCredentials()设置为false

    2024年02月12日
    浏览(38)
  • HBuilderX修改manifest.json设置,解决跨域问题(CORS、Cross-Origin)

    搭建一个前台uniapp,后台springboot的开发环境时,遇到了跨域问题。 console提示错误信息: Access to XMLHttpRequest at \\\'http://10.0.180.203/api/cms/getAdList?apId=1\\\' from origin \\\'http://localhost:8080\\\' has been blocked by CORS policy: Response to preflight request doesn\\\'t pass access control check: No \\\'Access-Control-Allow-Origin\\\'

    2024年02月10日
    浏览(34)
  • spring cloud gateway跨域配置CORS Configuration

    表象看:浏览器上的 IP,域名,端口 和你页面内请求的IP,域名,端口 之间组合不一致。这说法不够严谨,但不是本文的重点,更多概念自行检索。 spring-cloud-gateway3.x.x为例 官方说明 Spring Cloud Gateway 配置参数说明:CorsConfiguration (Spring Framework 5.0.20.RELEASE API)    附中文文档说明

    2024年02月13日
    浏览(27)
  • Asp .Net Core 系列: 集成 CORS跨域配置

    CORS,全称是“跨源资源共享”(Cross-Origin Resource Sharing),是一种Web应用程序的安全机制,用于控制不同源的资源之间的交互。 在Web应用程序中,CORS定义了一种机制,通过该机制,浏览器能够限制哪些外部网页可以访问来自不同源的资源。源由协议、域名和端口组成。当一

    2024年01月24日
    浏览(63)
  • SpringBoot 配置CORS处理前后端分离跨域配置无效问题解析

    浏览器有跨域限制,非同源策略(协议、主机名或端口不同)被视为跨域请求,解决跨域有跨域资源共享( CORS )、反向代理和 JSONP 的方式。本篇通过 SpringBoot 的资源共享配置(CORS)来解决前后端分离项目的跨域,以及从原理上去解决跨域配置不生效的问题。 使用前后端分离开源项

    2023年04月23日
    浏览(42)
  • 后端通过CorsRegistry对象配置了全局跨域,但是前端仍然报CORS跨域错误

    问题背景 在实现登录功能时,我先是通过CorsRegistry配置了全局跨域,然后配置了一个登录拦截器后前端就报错 CORS 跨域错误 问题原因 前置知识 首先我们来了解一下什么是跨域错误, 跨域错误 (Cross-Origin Error)是在Web开发中常见的错误之一,它发生在浏览器执行跨源请求(

    2024年02月07日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包