解决Origin请求头导致的Nginx反向代理403跨域问题

nginx中的proxy_set_header参数详解 proxy_set_header 是 Nginx 配置中用于设置代理请求 HTTP 头部的指令。当 Nginx 作为反向代理时,它允许自定义从客户端接收到的请求或添加新的请求头,然后将其转发到后端服务器。这对于维护 HTTP 协议的连贯性、安全性和功能性至关重要。X-My-Header 是一个自定义的请求头字段,用于存储自定义信息。上游服务器可以通过读取 X-My-Header 字段获取自定义信息。 阅读详情
AI摘要

文章描述了一种情况,即通过Nginx反向代理从域名A到域名B时遇到403跨域问题。使用Postman测试接口确认问题存在,发现请求头中的origin和sec-fetch-*字段可能影响。修改Nginx配置,特别是通过proxy_set_header改变origin请求头为反向代理的域名,从而解决了跨域问题,使页面接口响应成功。

1. 背景

页面通过域名A【https://a.winfun.com】访问接口,域名A通过Nginx服务进行反向代理,代理到域名B【http://b.winfun.com】,然后进行业务逻辑执行。
时序图:

在这里插入图片描述

nginx配置:

server {
  listen   31001;
  server_name    localhost;
  proxy_intercept_errors on;
  error_page 404 /404.html;
  error_page 500 502 503 504 /500.html;
  index index.html ;
  charset utf-8;
  
  location /proxy/ {
  	rewrite ^/proxy/(.*) /$1 break; 
  	proxy_pass  http://b.winfun.com;         
  }
    
  location / {
  	root   /usr/local/nginx/html/;
    try_files $uri  /index.html;
  }
}

2. 403跨域

接口返回Http状态为403,出现跨域问题。

image.png

3. Postman模拟

3.1. 模拟

为了方便测试,我们直接将接口放到Postman中进行模拟测试,并带上相关请求头,接口还是返回403,这个没疑问
image.png

3.2. 请求头

在请求头搬迁时,发现了几个可疑的请求头,包含:origin、sec-fetch-mode、sec-fetch-site
其中sec-fetch-mode显示cors,表示是跨域请求;而sec-fetch-stie显示的是same-origin。
orign显示的是和接口调用同样的域名。

image.png

3.3. 猜测

1、sec-fetch- 请求头*
首先将 sec-fetch-mode 也改成 same-origin,接口还是返回403❌,看来sec-fetch-*只是起一定的描述作用。

image.png
2、origin 请求头
跨域问题的出现都是因为请求不符合同源策略,虽然接口调用中,origin请求头和接口请求的域名都是一样的,但其实到了nginx服务,是会反向代理到另外一个域名的;我们此时将origin请求头的域名改为反向代理后的域名,接口返回成功✅

image.png

4、nginx配置调整

origin请求头是浏览器根据请求附上请求信息里面的,所以我们可以通过nginx的proxy_set_header来修改origin请求头。

server {
  listen   31001;
  server_name    localhost;
  proxy_intercept_errors on;
  error_page 404 /404.html;
  error_page 500 502 503 504 /500.html;
  index index.html ;
  charset utf-8;
  
  location /proxy/ {
  	rewrite ^/proxy/(.*) /$1 break; 
		proxy_set_header origin 'http://b.winfun.com';
  	proxy_pass  http://b.winfun.com;         
  }
    
  location / {
  	root   /usr/local/nginx/html/;
    try_files $uri  /index.html;
  }
}

页面接口响应成功!
image.png

手把手教你用Postman调试Nginx反向代理:定位Origin头导致的403跨域问题 本文详细介绍了如何使用Postman调试Nginx反向代理,解决由Origin请求头引发的403跨域问题。通过捕获真实请求头、逐步排除法验证和Nginx配置优化,提供了一套可复用的请求头调试方法论,帮助开发者快速定位并解决生产环境中的跨域问题。 阅读详情

相关推荐

Nginx反向代理遇到403跨域?别慌,可能是Origin请求头在捣鬼(附详细排查步骤)

本文深入解析Nginx反向代理中遇到的403跨域问题,指出Origin请求头是关键原因,并提供详细的排查步骤和配置优化方案。通过重写Origin头等技巧,帮助开发者有效解决跨域限制,确保前后端通信顺畅。

weixin_29758911的博客 363

同源策略与跨域

在前后端分离的今天,跨域也成了每个前端工程师都需要了解的基本知识,在各种面试题中的日经话题。这个文章就是想总结一下关于同源策略的前世今生,以及怎么解决它。 同源策略 在MDN中我们可以看到关于同源策略是一个安全机制。详细的说明如下: 同源策略限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的重要安全机制。 这个机制本身出发点是很好的,但是同源的限制非常严格,url,端口任一不同都会造成跨域错误。 而且在控制台中你不会发现任何问题。随着前后端分离越.

jiangshan112的博客 655

Nginx反向代理403跨域?别急着改CORS,先检查这个Origin请求头(附完整配置流程)

本文详细解析了Nginx反向代理中403跨域错误的常见原因,指出Origin请求头传递不当是关键问题。通过完整的配置流程和实战示例,指导开发者正确设置proxy_set_header指令,解决跨域问题并优化生产环境下的Nginx配置。

weixin_33491377的博客 364

记录Nginx proxy_set_header的坑

1. 背景 一个项目,使用nginx进行代理回源,新版本提交给测试同学后反馈说,回源Host不对。 第一反应:不应该啊,这个版本我没改回源Host相关的内容啊,是不是你环境问题?哈哈,典型的开发人员思维。不过也只是自己这么想了一下,还是赶紧解决问题了。 首先看了下代码提交记录,lua代码没有修改回源Host,排除;在回源的location中,增加了两行配置。然后就没有其他改动了。难道是location中的配置导致的? 配置文件结构如下: http { ... upstream origin_upstre

u010971572的专栏 2968

Nginx反向代理遇到403?别慌,可能是这个Origin请求头在捣鬼(附排查步骤)

本文详细解析了Nginx反向代理中因Origin请求头导致的403错误问题,提供了从现象分析到解决方案的完整排查步骤。通过调整Nginx配置正确处理Origin头,有效解决跨域访问问题,并分享了安全配置的最佳实践和调试工具推荐。

weixin_30231327的博客 361

Nginx反向代理403?别慌,可能是Origin请求头在捣鬼(附排查步骤与配置)

本文详细解析了Nginx反向代理出现403错误的常见原因,特别是由Origin请求头引发的跨域问题。通过对比浏览器与Postman的请求差异,提供逐步排查方法和完整的Nginx配置解决方案,帮助开发者快速定位并修复反向代理中的CORS问题。

weixin_33364627的博客 364

利用 Nginx 反向代理解决跨域问题

跨域问题 跨域是指请求已经到达服务器了,只不过在回来的时候被浏览器限制了。就像Python他可以进行抓取数据一样,不经过浏览器而发起请求是可以得到数据,想到通过Nginx的反向代理来解决跨域问题。 代理服务器 代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理服务器,代理服务接受客户机请求之后,再向主机发出,并接收目的主机返回的数据,存放在代理服务器的硬盘中,再发送给客户机。 正向代理 用户知道目标服务器地址,但由于网络限制等原因,无法直接访问。这时候需要先连接代理服务器,然后再由代理

woaichihanbao的博客 983

Nginx反向代理解决前端跨域问题:原理、配置与实战

跨域问题是前端开发中常见的挑战,其根源在于浏览器的同源策略,这是一种重要的安全机制,用于防止恶意网站窃取用户数据。为了解决不同源之间的资源交互问题,W3C制定了CORS(跨源资源共享)规范,它通过预检请求和特定的HTTP头部来实现安全的跨域通信。在工程实践中,直接在应用层处理CORS虽然可行,但在微服务架构和API网关场景下,配置分散且维护成本高。利用Nginx反向代理技术,可以将跨域处理从应用层剥离,部署在基础设施层,实现统一、高效、安全的解决方案。通过配置Nginx的proxy_pass指令和add_h

weixin_34059951的博客 474

403 Invalid CORS request 跨域问题 invalid+cors+request什么意思

5.跨域问题 跨域:浏览器对于javascript的同源策略的限制 。 以下情况都属于跨域: 跨域原因说明 示例 域名不同 www.jd.com 与 www.taobao.com 域名相同,端口不同 www.jd.com:8080 与 www.jd.com:8081 二级域名不同 item.jd.com 与 miaosha.jd.com 如果域名和端口都相同,但是请求路径不同,不属于跨域,如: www.jd.com/item www.jd.com/goods http和https

BaldHead`s 5万+

nginx配置引发的403问题解决办法

主要介绍了nginx配置引发的403问题解决办法的相关资料,需要的朋友可以参考下

EDA公司(一):Synopsys-- 主要 EDA 工具及其简介

Synopsys 是一家领先的电子设计自动化(EDA)软件公司,提供了一系列全面的产品和服务,旨在支持从概念设计到大规模生产的各个阶段。Synopsys 的 EDA 工具覆盖了芯片设计的各个方面,包括但不限于逻辑综合、静态时序分析、功能验证、物理实现、形式验证、测试插入、电源分析、信号完整性分析等。

MHD0815的博客 3311

巧用Nginx proxy_set_header:根治Origin头引发的反向代理403跨域难题

本文深入解析了Nginx反向代理中因Origin头引发的403跨域问题,提供了详细的诊断方法和解决方案。通过proxy_set_header配置技巧,可有效修复跨域访问限制,适用于多域名动态适配和WebSocket等高级场景,同时强调安全最佳实践。

weixin_27966471的博客 181

【学习笔记】人群归因分数 PAF 以及combined PAF

人群归因风险比例(Population Attributable Fraction,PAF)是一个流行病学指标,它估计了在总体中,如果能消除一个特定的危险因素,能预防多少百分比的疾病或健康结果。简单来说,PAF回答的是:“如果没有这个风险因素,总体中会有多少病例是可以避免的?

weixin_53499537的博客 4900

使用nginx作反向代理以支持CORS-跨域请求访问

CORS 定义 前后端分离的web系统,存在 CORS–跨域(协议 / 域名 / 端口)请求访问的问题。 关于 CORS 的定义,参考网上的帖子: “出于安全原因,浏览器限制从脚本内发起的跨源HTTP请求。 例如,XMLHttpRequest和Fetch API遵循同源策略。 这意味着使用这些API的Web应用程序只能从加载应用程序的同一个域请求HTTP资源,除非响应报文包含了正确CORS响应头。” 这里以我使用的架构作例子: 前端:使用 Vue.js ,通过 nodeJS 部署,假设地址为 http://

1万+

5分钟搞懂SCMA:稀疏码多址接入的核心原理与实战应用

本文深入浅出地解析了SCMA(稀疏码多址接入)的核心原理与实战应用。通过对比传统正交多址技术,阐释了SCMA如何通过非正交叠加和稀疏码本设计,实现远超资源单元数的用户接入,从而有效应对5G海量机器通信(mMTC)的挑战。文章还探讨了其在上行海量连接、免授权接入等场景的应用潜力及工程实现中的关键考量。

zeta9的博客 264

CST仿真实例001:圆极化平板天线仿真

CST仿真实例001:圆极化平板天线仿真实例

weixin_47638568的博客 1万+

JavaWeb26-Java Web:跨域问题解决(CORS 配置与 Nginx 反向代理)

跨域问题的根源在于浏览器的同源策略。该策略是浏览器的一项安全机制,旨在防止恶意网站窃取用户数据。“同源”指的是两个 URL 的协议(protocol)、域名(host)、端口(port)完全相同。只要其中任意一项不同,就被视为“不同源”,即跨域。URL 1URL 2是否同源原因✅ 是完全相同❌ 否协议不同(https vs http)❌ 否域名不同(子域名不同)❌ 否端口不同✅ 是路径不同不影响同源🔗延伸阅读MDN 同源策略如果前端需要读取响应中的自定义头(如),必须在。

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

【脑电分析系列】第7篇:频域分析基石 — 功率谱密度(PSD)的计算与常见方法对比

本文探讨了脑电图(EEG)频域分析的核心方法——功率谱密度(PSD)。通过对比基于快速傅里叶变换的周期图法和更稳健的Welch's方法,指出后者通过分段、加窗和平均处理,能有效降低估计方差,更适合分析非稳态的脑电信号。文章详细解析了关键参数设置对频率分辨率和统计稳定性的影响,并提供了Python计算实现。PSD分析将复杂的脑电信号转换为直观的频域特征,为研究认知功能和神经疾病提供重要依据。

qq_32516809的博客 1805

403 Invalid CORS request 跨域问题解决

403 跨域问题

firament的博客 3070

关于对鱼眼相机图片进行畸变校正的两种思路

鱼眼畸变主要表现为径向畸变(Radial Distortion),图像中心正常,边缘向外拉伸。畸变模型通常基于入射角θ\thetaθ(光线与光学轴夹角)和图像半径rrr的关系。等距投影(Equidistant Projection)rdfθrd​fθ,其中rdr_drd​为畸变图像半径,fff为焦距,θ\thetaθ为入射角。等立体角投影(Equisolid Angle Projection)rd2fsin⁡θ2rd​2fsinθ/2。

qq_45670407的博客 1546

Modbus协议全家桶(C#纯原生完整版):ModbusRTU + ModbusTCP + ModbusASCII 协议规范+完整封装+工业级实战

你已经掌握了C#串口/网口原生核心API和工业通信协议本质,而今天的主角Modbus协议,是工业通信领域绝对的王者、通用的标准、入门的必修课,没有之一。凡是做工业通信开发,必会Modbus协议;市面上99%的工业设备(PLC、变频器、温控仪、传感器、流量计、扫码枪)都原生支持Modbus协议。Modbus协议不是单一协议,而是一个「协议家族」,我们常说的就是这个家族的三大核心成员,也是工业现场的全部Modbus应用形态。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 563

Nginx反向代理实战:从原理到配置,彻底解决前端跨域问题

跨域问题是Web开发中的常见挑战,其根源在于浏览器的同源策略(Same-Origin Policy)。该策略是一种安全机制,旨在防止恶意网站窃取用户数据,但它也限制了不同源(协议、域名、端口)之间的资源交互。为了解决这一限制,CORS(跨源资源共享)机制应运而生,它允许服务器通过特定的HTTP响应头(如Access-Control-Allow-Origin)来声明允许哪些源进行跨域访问。在工程实践中,一种高效且对后端透明的解决方案是使用Nginx反向代理。通过将跨域请求在服务器端转发为同源请求,并动态添加必

weixin_30307921的博客 380

【Bug已解决】This model‘s maximum context length is X tokens. However, you requested Y tokens 解决方案

summary_prompt = "请将以下对话历史压缩成一段简洁摘要,保留关键决策和结论:\n" + format_messages(old_part)return [{"role": "system", "content": f"此前对话摘要:{summary}"}] + recent_part这种方式能在大幅降低 token 消耗的同时,尽量保留任务推进所需的关键上下文,是目前业内做长会话 Agent 最常见的处理方式之一。方案适用场景推荐指数滑动窗口裁剪短任务,对早期历史依赖不强⭐⭐⭐。

一键难忘的博客 1万+

nginx 配置跨域失效修复

nginx 配置跨域不生效 如下配置 server { listen 80; server_name localhost; # 接口转发 location /api/ { # 允许请求地址跨域 * 做为通配符 add_header 'Access-Co...

db3265613的专栏 2451

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

上一篇: Docker入门知识点总结
下一篇: Spring Boot Starter Data Redis使用Lettuce客户端报错:NOAUTH Authentication required
Howinfun
博客等级 码龄10年 165粉丝 213原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值