记录工作中遇到的问题(持续更新~)

跨域问题 2024-09-15

【前提】:前端配置了nignx转发,后端设置了跨域拦截,对http://xxxx做了允许跨域。但是访问http://xxx被拦截了,返回403 *Forbidden。*同样的配置放在另外一套部署的环境上就完全没问题,http://xxx可以访问。经过反复排查,配置对比,仍是没有找到原因。最后修改后端跨域配置允许https://xxx的跨域请求,结果访问http://xxxx就可以了,简直玄学~

了解一下什么是跨域:

跨域请求是指在Web开发中,当一个Web应用程序试图通过Ajax等技术向一个不同源的URL发送请求时,会受到同源策略的限制。这里的**"源"**指的是协议、域名和端口号三者的组合。如果这三者中有任何一个不同,就视为跨域请求。

排查范围:

  • 响应头:确保Access-Control-Allow-Origin、Access-Control-Allow-MethodsAccess-Control-Allow-Headers被正确地添加到HTTP响应的头部中。
  • 预检请求:对于某些复杂的跨域请求(如带有自定义HTTP头或方法的请求),浏览器会首先发送一个OPTIONS请求的预检请求。检查服务器日志以查看是否收到了OPTIONS请求,并返回正确的CORS头部。
  • 浏览器拦截:浏览器的安全策略可能会阻止某些跨域请求,即使服务器返回了正确的CORS头部。
  • 第三方服务:如果请求经过了第三方服务(如CDN、负载均衡器)或中间件(如反向代理),这些服务或中间件可能会修改或删除CORS头部。

什么情况下http请求传到后端会变成https

  • 重定向:服务器(如Apache、Nginx等)可以配置重定向规则,将HTTP请求自动重定向到HTTPS。
  • 中间层:如果HTTP请求首先通过反向代理或负载均衡器,这些中间设备也可以配置为将HTTP请求转换为HTTPS请求,然后再转发给后端服务器。
  • HSTS:当网站支持HTTPS,并且已经向浏览器发送了HSTS策略时,浏览器会自动将后续的所有HTTP请求转换为HTTPS请求,而无需服务器或中间设备的干预。HSTS是一种安全特性,旨在保护网站免受中间人攻击等威胁。
  • 网络环境:在某些网络环境中,如企业内网或政府网络,可能会实施网络安全策略,要求所有网络流量都必须通过HTTPS进行加密传输。在这种情况下,即使原始请求是HTTP,也可能在网络传输过程中被自动转换为HTTPS。

原因:翻了一下日志,发现是将http加入配置后没有重启服务,下午加https后重启了服务(嗐)。

相关推荐
Java 码农5 分钟前
Centos7 maven 安装
java·python·centos·maven
harmful_sheep13 分钟前
maven mvn 安装自定义 jar 包
java·maven·jar
007php00737 分钟前
某大厂跳动面试:计算机网络相关问题解析与总结
java·开发语言·学习·计算机网络·mysql·面试·职场和发展
JH30731 小时前
第七篇:Buffer Pool 与 InnoDB 其他组件的协作
java·数据库·mysql·oracle
皮皮林5512 小时前
订单分库分表后,商家如何高效的查询?
java
Roye_ack2 小时前
【项目实战 Day12】springboot + vue 苍穹外卖系统(Apache POI + 工作台模块 + Excel表格导出 完结)
java·spring boot·后端·excel·苍穹外卖
Code blocks4 小时前
SpringBoot自定义请求前缀
java·spring boot·后端
Jabes.yang4 小时前
Java求职面试:从Spring Boot到Kafka的技术探讨
java·spring boot·面试·kafka·互联网大厂
canonical_entropy5 小时前
DDD本质论:从哲学到数学,再到工程实践的完整指南之实践篇
java·后端·领域驱动设计
_Power_Y5 小时前
Java面试常用算法api速刷
java·算法·面试