nginx 配置Https强转和Cross跨域配置撞车遇到的坑

计组实验5:cache大小测量与 cache line 大小测量 前言 今天做了实验5,通过 c 语言测 cache 参数。其实按理来说挺简单的,只是我们班没给代码,纯靠自己。听说别的班有给代码 emm 因为《深入理解计算机系统》这本书上面给的代码是 Linux 平台下的,而且需要一个 fcyc2 头文件,可以在 https://github.com/fabiensanglard/CpuCacheMountainViewer 这里找到。 ⚠ 我没有在 Linux 下试过课本上面的代码。。。 我是在 win10 下测试的。。。 所以 。。。 我并不确定我的代码是否正确。 阅读详情

一、背景说明
项目中Https强转逻辑是在nginx层面配置的,Cross跨域逻辑处理是在项目的Java代码层面处理的。
向服务器发起Http跨域请求时,出现Cross跨域逻辑处理失效问题
nginx 中Https 强转配置,如下所示:

if ($server_port = 80 ) {
   rewrite ^(.*)$  https://$host$1 permanent;
}

Cross跨域逻辑处理层,代码如下所示:

String originUrl = request.getHeader("origin");//请求的地址
if (StringUtils.isNotEmpty(originUrl)){
       if (originUrl.endsWith("test.com")){
           response.setHeader("Access-Control-Allow-Origin", originUrl);
           response.setHeader("Access-Control-Allow-Credentials", "true");
           response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS");
           response.setHeader("Access-Control-Max-Age", "1800");//30分钟
           response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept,frLo");
      }
      if (request.getMethod().equalsIgnoreCase(HttpMethod.OPTIONS.name())) {   
           response.setStatus(200);
           return false;
     }
}

二、问题描述

1)例如:在sun.test.com系统中,使用JS脚本发起Ajax请求,向my.timer.com服务器发起Http请求,my.timer.com服务器中配置了以上的Https强转和Cross逻辑处理代码。
2)my.timer.com 服务器的nginx收到Http请求后,会执行Https强转,然后发起重定向rewrite Https请求,此时由于发起了重定向请求导致原跨域请求header中的origin 参数丢失
注:rewrite 和 return 301 https://$host$request_uri; 都会导致header 中的orgin参数丢失,因为两种方式都是发起重定向请求
3) my.timer.com 服务器再次收到第2步重定向后的Https请求,由于header中的origin参数丢失,最终导致后端java  Cross跨域处理逻辑失效,由于Cross 是否跨域请求都是借助header中的origin参数来处理的

三、问题尝试解决

1)考虑在nginx中 rewrite之前 使用   add_header 'Origin' $http_origin;  添加header,无法解决问题,因为rewrite 是重定向请求,add_header 无法生效

2)将Cross 跨域逻辑处理转移到nginx中配置如下所示:

set $cors "false";
if ($http_origin ~* "(test.com)") {
      set $cors "true0";
}
if ($request_method = 'OPTIONS') {
    set $cors "true1";
}
if ($cors = "true0") {
      add_header 'Access-Control-Allow-Origin' "$http_origin";
      add_header 'Access-Control-Allow-Credentials' 'true';
      add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
      add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
      add_header 'Access-Control-Max-Age' 1728000;
}
if ($cors = "true1") {
  add_header 'Access-Control-Allow-Origin' "$http_origin";
  add_header 'Access-Control-Allow-Credentials' 'true';
  add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
  add_header 'Access-Control-Allow-Headers' 'Origin,X-Requested-With,Content-Type,Accept,frLo';
  add_header 'Access-Control-Max-Age' 1728000;
  return 200;
}
if ($server_port = 80 ) {
	 rewrite ^(.*)$  https://$host$1 permanent;
}

还是无法解决以上问题

四、解决方案

未找到完美解决方案,只能让sun.test.com系统中发起跨域Ajax请求时,默认使用Https协议请求服务器,避开服务的Http请求强转。

老版QQ原生表情gif动态 这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。 立即下载

相关推荐

基于机器学习和辐射传输的地表温度模拟方法对比

对于不同的地表类型和不同的年份,经验方法是实用的,虽然整体精度不如物理方法,但具有计算速度快、对模型内部结构考虑较少等优点。尽管深度学习等回归的经验方法不需要考虑辐射传输和能量平衡的具体过程, 但在其输入参数的选择上也不能是无序和随机的,而是应选择有关相应物理过程的参数。经验方法在处理不同年份相同地表类型或表现相对较好, RMSE 约为 1.50K,但在不同地表类型且不同年份模拟结果较差, RMSE 约为 3.0K, 虽然精度不如物理方法,但它具有计算速度快,不需过多考虑模型内部结构的优点。

2301_77907355的博客 1020

CROS错误 403 preflight 预检

CROS错误 403 preflight 预检

m0_55546349的博客 2430

2026年4月AI爆发周:阿里连推三款模型、字节全双工语音上线,国内大模型进入“落地竞速“新阶段

**摘要:**2026年4月初,国内AI大模型迎来密集发布,阿里、字节、腾讯分别推出新产品。阿里一周发布三款模型,覆盖通用推理、多模态轻量化和长文档处理,API价格大幅下降;字节推出全双工语音模型,实现实时交互,技术难度高;腾讯混元3.0强调工程化和生态整合,面向企业私有化部署。趋势显示,行业从性能竞赛转向落地竞赛,多模态成为主战场,API成本降低,开发者选择更丰富。国内大模型竞争重点转向实际应用和生态整合。

weixin_45526015的博客 1万+

原因:cors 请求未能成功_Cors最佳实践

基础知识CORS(Cross-Origin Resource Sharing),跨域资源共享,是浏览器跨域的官方解决方案。相比其他常见的跨域解决方案(jsonp、iframe、postMessage),CORS具有以下优点:前端代码优雅。CORS由浏览器和后台交互完成,前端开发者感受不到和同源通信的差别,代码完全一样;规范标准,兼容性好,IE10以上都支持,浏览器之间几乎没有差异;支持所...

weixin_39837352的博客 4242

手把手教你用FreeModbus RTU协议栈实现STM32与PLC通信(附Keil工程)

本文详细介绍了如何使用FreeModbus RTU协议栈在STM32上实现与PLC的工业通信。从环境搭建、工程配置到关键移植接口实现,提供了Keil工程模板和调试技巧,帮助开发者快速掌握Modbus RTU通信技术,适用于工业自动化领域的设备间通信需求。

weixin_42549037的博客 418

Zynq裸机调试RTL8211FS网卡踩坑记:从ping不通到完美兼容的完整代码修改

本文详细记录了在Zynq平台上使用Xilinx SDK(XSDK)调试RTL8211FS网卡的完整过程,从最初的ping不通问题到最终实现完美兼容的解决方案。通过分析PHY芯片的寄存器配置差异,提供了关键代码修改和调试技巧,帮助开发者快速解决类似问题。

weixin_42550597的博客 419

跨域资源共享 CORS 详解

跨域资源共享 CORS 详解作者:阮一峰日期:2016年4月12日CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。本文详细介绍CORS的内部机制。(图片说明:摄于阿联酋艾因(Al Ain)的绿洲公园)一、简介...

weixin_34365417的博客 2573

Jaspersoft Studio安装与配置全攻略:从下载到首个报表生成

本文提供Jaspersoft Studio从下载、安装到创建首个报表的完整实战指南。详细介绍了如何获取安装包、配置工作空间,并通过可视化设计器创建报表模板、添加参数与字段,最终实现数据预览与PDF导出。帮助Java开发者快速掌握这一强大的开源报表工具,提升报表开发效率。

weixin_28826521的博客 702

Spring 处理跨域请求

Spring 处理跨域请求

weixin_42683274的博客 881

手把手教你用Simulink搭建交流异步电机矢量控制模型(附完整仿真文件)

本文提供了一份详细的Simulink仿真指南,手把手教你从零开始搭建交流异步电机矢量控制模型。内容涵盖主电路搭建、坐标变换实现、双闭环PI调节器设计、转子磁链观测器调试等核心步骤,并附有完整的仿真文件,帮助读者跨越理论到实践的鸿沟,掌握高性能电机控制系统的建模与仿真技能。

pz890123的博客 664

记住这两个纯净版Windows11各系列版本系统下载网站

记住这两个纯净版Windows11各系列版本系统下载网站 HelloWindows是一个完整极致的Windows纯净系统下载站,不夹带任何私货,系统全部来源于微软官方原版,本站只是收录官方发布的系统以及工具,方便大家下载,请放心使用。永久在线:www.hellowindows.cn。HelloWindows.cn - 精校 完整 极致 Windows系统下载仓储站。

拥抱具身智能,昇腾Ascend C 7002

Springboot+Vue进行跨域访问时GET正常,但POST 403的解决方案

(65条消息) 【跨域异常】get请求能访问,但是post请求报403跨域异常_get可以跨域 post不能跨域_weiambt的博客-优快云博客。根据控制台报的错能很快锁定是跨域问题,但是搜索了十多个相关的解决办法帖子,要么不适用,要么就是禁用Spring Security。此贴非常详细的介绍了CORS解决浏览器跨域的原理,对我这个小白来说非常友好。本人跟着的是“程序员青戈”的b站springboot+vue的小白教学视频做的,看到p9的时候出现了 前端。保护,尝试过后者,但是并没有什么卵用。

boluotangbao的博客 3456

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

原因:cors 请求未能成功_CORS跨域漏洞学习

简介网站如果存CORS跨域漏洞就会有用户敏感数据被窃取的风险。跨域资源共享(CORS)是一种浏览器机制,可实现对位于给定域外部的资源的受控访问。它扩展了同源策略(SOP)并增加了灵活性。但是,如果网站的CORS策略配置和实施不当,它也可能带来基于跨域的攻击。CORS并不是针对跨域攻击(例如跨站点请求伪造(CSRF))的保护措施。同源策略这里我们必须要了解一下同源策略:同源策略是一种限制性...

weixin_39963174的博客 2921

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Firefox浏览器报错:CORS请求未能成功

最近在开发中遇到个问题,项目部署完后在Google浏览器能正常使用,但是在Firefox浏览器报跨域拦截(CORS请求未能成功);经检查后端代码以及Nginx都已经配置了跨域相关的代码,按理不应该在出现跨域问题啊。经排查发现问题出在证书上,Firefox认为后端证书不安全从而进行了拦截,好像是项目的域名与证书不一致导致。证书管理器弹窗里切到服务器部分,点击添加例外,再把需要信任的地址添加进去,就可以正常访问了。由于这是浏览器的安全机制做的拦截,只要让浏览器信任该证书就行。...

snowflakelm的博客 8230

403 Invalid CORS request 跨域问题

跨域问题是浏览器对于ajax请求的一种安全限制: 一个页面发起的ajax请求,只能是与当前页面域名相同的路径, 这能有效的阻止跨站攻击。2).域名相同,端口不同: www.country.com:8080 , www.country.com:8081。3).二级域名不同: a.country.com , b.country.com。1).域名不同: www.baidu.com , www.google.com。CORS是一种规范化的跨域请求解决方案,安全可靠。四. 跨域问题是怎么来的。

qq_16815191的博客 2197

spring 403 Invalid CORS request 跨域问题

@CrossOrigin(origins = "*",maxAge = 3600)

tmjianjun的博客 1008

WebMvcConfigurerAdapter各个方法的作用

public abstract class WebMvcConfigurerAdapter implements WebMvcConfigurer { /** 设置匹配路由请求规则 **/ public void configurePathMatch(PathMatchConfigurer configurer) { } /** 配置内容裁决的一些选项 **/ public void configureContentNegotiation(ContentNegotiationConfigure

u013343616的博客 450

向请求头添加自定义属性,实现token功能时,出现CORS跨域导致请求失败( has been blocked by CORS policy: ... No ‘Access-Control-All)

场景:在使用 SpringBoot + Vue 进行前后端分离的开发过程中,部分功能是需要当用户登陆成功时后端(SpringBoot)向前端(Vue)返回一个token值,前端将这个token值放在以后每个请求的请求头中,后端先从拦截器中验证token值的存在,再放行请求,以确保不会被别人恶意修改、删除数据,结果出现了CORS跨域导致请求失败的情况。非简单请求的CORS请求,会在正式通信之前,增加一次HTTP查询请求,称为 “预检” 请求(preflight)。由于在后端拦截器中拦截了所有的请求,

piglite的专栏 3275

解决 strict-origin-when-cross-origin 问题

使用90版本之后的谷歌浏览器, 在部署前端项目后, 调用后端接口出现 strict-origin-when-cross-origin, 并且静态资源被拦截的情况的解决

时间静止 18万+

CORS跨域

当一个请求的url的协议、域名、端口任意一个与当前页面的url不同即为跨域。a页面想获取b页面的资源,a与b页面的协议、域名或端口号不同,进行的访问行为都是跨域,由于浏览器的同源策略,会限制跨域请求资源。

qq_64497094的博客 475

403错误通常表示服务器理解请求,但拒绝执行。这可能涉及权限、配置、CORS、安全设置等问题。分步骤分析可能的原因

403错误通常表示服务器理解请求,但拒绝执行。这可能涉及权限、配置、CORS、安全设置等问题。分步骤分析可能的原因

爱的叹息的专栏 1612

CORS on Nginx

The following Nginx configuration enables CORS, with support for preflight requests. # # Wide-open CORS config for nginx # location / { if ($request_method = 'OPTIONS') { add_header 'A...

huangbaokang的博客 800

nginx 开启https时反向代理http服务的问题

当我们用nginx开启https时,反向代理一个本地的http服务,会遭遇跨域问题,报错。,导致很多资源无法加载。

Star_tears的博客 2086

CORS解决跨域问题(403问题)

1、什么是跨域问题?   跨域问题是浏览器对于ajax请求的一种安全限制:一个页面发起的ajax请求,只能是用当前页同域名同端口的路径,这能有效的阻止跨站攻击。 2、跨域问题出现的条件:   1、跨域问题是ajax请求特有的问题。   2、前后端的域名、端口不一致。 3、CORS跨域解决原理简单分析:   CORS需要浏览器和服务器的同时支持。   浏...

weixin_30622181的博客 1035

Nginx配置HTTPS,前端访问正常,后端报错strict-origin-when-cross-origin

Nginx配置HTTPS,前端HTTPS访问正常,后端HTPPS无法访问 报错strict-origin-when-cross-origin 原因:Nginx 给前端配置了 SSL 证书,但是后端没有配置SSL证书,导致前端HTTPS访问正常,但后端无法使用HTTPS。 解决办法: 举例:Flask 后端 后端配置 ssl_context ...

Sareyer的博客 9471

Nginx配置HTTPS 访问前端报错 strict-origin-when-cross-origin

Nginx conf 文件 配置 http 以及 https 后,http可以正常访问前端页面,https访问报错:strict-origin-when-cross-origin,尝试:检查443端口状态,并重新加载防火墙配置。 1.查看443端口状态 firewall-cmd --add-port=443/tcp --zone=public --permanent 正常则返回:success 2.重新加载 firewall-cmd --reload ...

Sareyer的博客 1万+
上一篇: CMS 升级到G1遇到RSS内存泄漏问题
下一篇: Spring Orika Bean Copy 属性丢失问题说明
TimerBin
博客等级 码龄12年 54粉丝 119原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值