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

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

相关推荐
码农小伙5 分钟前
ConcurrentHashMap解析
java·开发语言
WhiteJunior25 分钟前
Java基础知识点汇总(五)
java·开发语言
晚安里1 小时前
JVM相关 4|JVM调优与常见参数(如 -Xms、-Xmx、-XX:+PrintGCDetails) 的必会知识点汇总
java·开发语言·jvm·后端·算法
纪莫2 小时前
技术面:Java并发(线程池、ForkJoinPool)
java·java面试⑧股
叫我阿柒啊2 小时前
从Java全栈到前端框架:一次真实的面试对话
java·spring boot·微服务·前端框架·vue3·全栈开发
齐 飞2 小时前
SpringBoot实现国际化(多语言)配置
java·spring boot·后端
萤丰信息2 小时前
智慧工地如何撕掉“高危低效”标签?三大社会效益重构建筑业价值坐标
java·大数据·人工智能·微服务·重构·架构·智慧工地
fqq32 小时前
记录一个细节问题Servlet注解有两种方式
java·servlet·tomcat
小薛博客3 小时前
26、Jenkins流水线
java·servlet·jenkins
CHEN5_023 小时前
【CouponHub项目开发】EasyExcel解析Excel并使用线程池异步执行和延时队列兜底
java·数据库·excel