Nginx配置跨域,覆盖后端服务跨域配置
本篇文章主要介绍了,如何通过Nginx配置跨域,并覆盖后端服务跨域配置。
先看下后端代码跨域配置:
主要的目标是:不修改后端跨域配置代码,来实现Nginx跨域指定域名。
@Bean
public CorsFilter corsFilter() {
final UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();
final CorsConfiguration corsConfiguration = new CorsConfiguration();
corsConfiguration.setAllowCredentials(true);
corsConfiguration.addAllowedOrigin("*");
corsConfiguration.addAllowedHeader("*");
corsConfiguration.addAllowedMethod("*");
urlBasedCorsConfigurationSource.registerCorsConfiguration("/**",
corsConfiguration);
log.info("跨域已启动");
return new CorsFilter(urlBasedCorsConfigurationSource);
}
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
Nginx覆盖后端代理服务的header,有两种实现方式
- 使用 proxy_hide_header 方式实现。
- 使用more_set_headers 'Access-Control-Allow-Origin: 指定域名';
使用 proxy_hide_header 方式实现:
server {
listen 7077;
server_name localhost;
add_header Access-Control-Allow-Headers "*";
add_header Access-Control-Allow-Methods "POST, GET, PUT, PATCH, OPTIONS";
#隐藏后端服务响应中的 Access-Control-Allow-Origin 标头
proxy_hide_header 'Access-Control-Allow-Origin';
# 隐藏后再次添加 Access-Control-Allow-Origin 标头。只允许8091域下访问
add_header 'Access-Control-Allow-Origin' 'http://192.0.0.1:8091';
location /xxx/pc {
proxy_pass http://192.0.0.1:7077;
}
}
使用more_set_headers方式实现:
more方式需要安装nginx模块。模块安装可以参考:more安装步骤
server {
listen 7077;
server_name localhost;
add_header Access-Control-Allow-Headers "*";
add_header Access-Control-Allow-Methods "POST, GET, PUT, PATCH, OPTIONS";
#直接设置后端服务响应中的 Access-Control-Allow-Origin 标头内容。
more_set_headers 'Access-Control-Allow-Origin: http://192.0.0.1:8091'
location /xxx/pc {
proxy_pass http://192.0.0.1:7077;
}
}
Nginx配置跨域,覆盖后端服务跨域配置的更多相关文章
- SpringBoot 配置CORS处理前后端分离跨域配置无效问题解析
前言 浏览器有跨域限制,非同源策略(协议.主机名或端口不同)被视为跨域请求,解决跨域有跨域资源共享(CORS).反向代理和 JSONP的方式.本篇通过 SpringBoot 的资源共享配置(CORS) ...
- nginx反向代理实现前后端分离&跨域问题
1.代理和跨域 1.1 正向代理 1)用户希望代理服务器帮助其和要访问服务器之间实现通信,需要: a.用户IP报文的目的IP=代理服务器IP: b.用户报文端口号=代理服务器监听端口号: c.HTTP ...
- 【django-vue】前端取消默认样式 main.js配置 后端主页模块接口 跨域问题详解 项目自定义配置 git介绍和安装
目录 回顾 上节课回顾 今日内容 1 前端全局样式和js配置 1.1 global.css 1.2 settings.js 1.3 main.js 2 后端主页模块接口 三种开发模式 模型父类Base ...
- Consul 服务发现与配置
Consule 是什么 Consul包含多个组件,但是作为一个整体,为你的基础设施提供服务发现和服务配置的工具.他提供以下关键特性: 服务发现 Consul 的客户端可用提供一个服务,比如 api 或 ...
- nginx-springboot-vue前后端分离跨域配置
nginx-springboot-vue前后端分离跨域配置 引言 接着上篇--简单的springboot-vue前后端分离登录Session拦截的demo,其中跨域是通过springboot后端全局设 ...
- Nginx反向代理和Node.js后端解决跨域问题
最近在写自己的博客,涉及到跨域的问题,自己捣鼓许久,终于解决了.然后总结一下,记录一下,日后遇到类似的问题的时候也可以得到一些启发. 一.什么是跨域 跨域,指的是浏览器不能执行其他网站的脚本.它是由浏 ...
- 使用nginx反向代理处理前后端跨域访问
本文主要解决:使用nginx反向代理处理前后端跨域访问的问题 1.何为跨域访问? 以下类型为跨域访问 1)不同域名间访问 www.zuiyoujie.com和www.baidu.com 2)同域名不同 ...
- nginx解决跨域(前后端分离)
Nginx解决跨域问题 后端接口 请求地址 返回数据(json数据) http://127.0.0.1:8080//app Hello World! 前端代码 通过nginx做静态资源服务器访问端口8 ...
- 配置Nginx和Apache允许指定域名CORS跨域访问
前后端分离开发,导致前端项目需要跨域请求后端接口,解决方法有很多,本文只介绍两个: 1. 修改后端程序代码实现允许跨域请求 2. 修改服务器配置文件实现允许跨域请求 正文: 方法1:修改后端程序代码实 ...
- 14 微服务电商【黑马乐优商城】:day06-使用nginx反向代理并掌握cors解决跨域
本项目的笔记和资料的Download,请点击这一句话自行获取. day01-springboot(理论篇) :day01-springboot(实践篇) day02-springcloud(理论篇一) ...
随机推荐
- 探探的IM长连接技术实践:技术选型、架构设计、性能优化
本文由探探服务端高级技术专家张凯宏分享,原题"探探长链接项目的Go语言实践",因原文内容有较多错误,有修订和改动. 1.引言 即时通信长连接服务处于网络接入层,这个领域非常适合用G ...
- IM开发基础知识补课(十):大型IM系统有多难?万字长文,搞懂异地多活!
本文由公众号"水滴与银弹"号主Kaito原创分享,原题"搞懂异地多活,看这篇就够了",为使文章更好理解,有修订. 1.引言 前几天技术群里有群友问我手上有没有I ...
- Python学习(六)——配套《PyTorch深度学习实战》
1. NumPy介绍 这张图片介绍了Python中两个非常重要的科学计算库:NumPy和SciPy,以及它们的核心功能和特性. NumPy NumPy(Numerical Python)是一个开源的P ...
- Solution -「CTSC 2017」「洛谷 P3772」游戏
\(\mathscr{Description}\) 有 \(n\) 个随机真值 \(x_{1..n}\), 已知 \(P(x_1=1)=p_1\), 对于 \(2\le i\le n\), \(P ...
- LCR 170. 交易逆序对的总数
交易逆序对的总数 在股票交易中,如果前一天的股价高于后一天的股价,则可以认为存在一个「交易逆序对」.请设计一个程序,输入一段时间内的股票交易记录 record,返回其中存在的「交易逆序对」总数. 示例 ...
- 直播预览层(AVCaptureVideoPreviewLayer)底层实现
分析sampleBuffer(帧数据) 通过设置AVCaptureVideoDataOutput的代理,就能获取捕获到一帧一帧数据 [videoOutput setSampleBufferDelega ...
- Swagger介绍和应用
1.什么是swaggerSwagger是一个规范和完整的框架,用于生成.描述.调用和可视化RESTful风格的Web服务.简单来说,Swagger是一个功能强大的接口管理工具,并且提供了多种编程语言的 ...
- idea创建一个入门Spring Boot项目(controller层)使用Maven代码管理
springboot的优质开发体验,能够更快速的搭建生产环境的项目.这篇文章就是一个超级简单的入门springboot项目.包含了一些简单的理论和超简单Controller层 [工具] IDEA 全称 ...
- C:条件编译
问题 #ifdef HELIB_DEBUG long pa, pb; std::vector<long> slots; decryptBinaryNums(slots, a, *dbgKe ...
- 微信小程序上拉触底事件onReachBottom不触发的解决方案
1.配置属性问题 //设置容器高度为100% page{ height: 100% } 2. 切换页面时 滚动条滚回到顶部 //切换页面时调用API wx.pageScrollTo({ scrollT ...