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

跨域问题 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后重启了服务(嗐)。

相关推荐
aloha_7892 分钟前
联易融测开面试准备
java·python·面试·单元测试
s***46984 分钟前
【SpringBoot篇】详解Bean的管理(获取bean,bean的作用域,第三方bean)
java·spring boot·后端
动亦定1 小时前
页面导出大量数据导致响应超时解决方案
java·mysql
q***06291 小时前
解决 Tomcat 跨域问题 - Tomcat 配置静态文件和 Java Web 服务(Spring MVC Springboot)同时允许跨域
java·前端·spring
还是鼠鼠1 小时前
Redisson实现的分布式锁能解决主从一致性的问题吗?
java·数据库·redis·分布式·缓存·面试·redisson
d***95621 小时前
windows配置永久路由
java
王桑.2 小时前
IO流高级流--转换流
java
qq_12498707533 小时前
基于SpringBoot技术的企业请假审批管理系统的设计与实现(源码+论文+部署+安装)
java·spring boot·后端·信息可视化·毕业设计
BBB努力学习程序设计3 小时前
Java方法详解:提升代码复用性与可读性的利器
java
BBB努力学习程序设计3 小时前
Java运算符完全指南:让代码学会“计算”和“判断”
java