什么是跨域问题?后端如何解决跨域问题?

跨域问题是指浏览器为了安全,对不同域(包含不同协议、不同端口或不同主机名)的请求进行限制,从而导致请求无法正常访问后端接口。

跨域问题的产生源于浏览器的同源策略(Same-Origin Policy) ,这是浏览器为保护用户数据安全而建立的核心安全机制。同源策略规定:只有当两个资源的协议(protocol)、域名(domain)、端口(port) 完全相同时,才属于同一来源,否则视为跨域。

  • 跨域场景示例:

    • 前端运行在 http://localhost:8080,后端接口在 http://api.example.com:8081(域名、端口不同)
    • 前端通过 https 访问,后端接口使用 http 协议(协议不同)
    • 前端部署在 www.example.com,后端在 api.example.com(子域名不同)
  • 同源策略的安全意义:防止恶意网站通过脚本获取其他网站的用户 Cookie、本地存储等敏感信息,避免 CSRF(跨站请求伪造)、XSS(跨站脚本攻击)等安全风险。

java 复制代码
@Configuration  
public class CorsConfig implements WebMvcConfigurer {  
  
    @Override  
    public void addCorsMappings(CorsRegistry registry) {  
        // 覆盖所有请求  
        registry.addMapping("/**")  
                // 允许发送 Cookie                .allowCredentials(true)  
                // 放行哪些域名(必须用 patterns,否则 * 会和 allowCredentials 冲突)  
                .allowedOriginPatterns("*")  
                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")  
                .allowedHeaders("*")  
                .exposedHeaders("*");  
    }  
}
相关推荐
2601_962106641 小时前
【Java Set综合实战】商品管理系统 + 图书收藏系统|Product、Book自定义类全套代码
java
RuoyiOffice2 小时前
SpringBoot+Vue3 凭证生命周期设计:审核、过账、冲销与反过账怎样保持账目一致
java·spring boot·事务·springboot3·财务系统·会计凭证·ruoyi office
2601_962106642 小时前
HashMap入门|工号-姓名键值存储、两种遍历方式、根据key/value查
java
RuoyiOffice3 小时前
KubeSphere 容器云实践:从管理 K8s 到建设企业 PaaS,还需要哪些能力
spring boot·kubernetes·kubesphere·jenkins·paas·微服务部署·ruoyi office
杨凯凡3 小时前
Spring Framework 7 API 版本管理实战:请求头路由、兼容迁移与废弃策略
java·rest api·springframework·spring boot 4·api版本管理
T_Wizard3 小时前
同一个问题写了 4 遍:官方 SDK / HTTP / Spring AI / LangChain4j,到底该选哪个
java·ai编程
hai_android3 小时前
AudioTrack 深度解析:从原理到实战
android·java·kotlin
斯维赤4 小时前
限流、熔断、降级,你真的分得清吗?
java·后端·架构
aiks_yuan7 小时前
Java CPU 100% 怎么排查:JDK 11 起 jstack 自带线程 CPU 时间,不用再 top -H 换算十六进制(JDK 8、11、17 实测)
java
Flynn Liang8 小时前
AiServices 源码级拆解:一个接口如何变成 RAG Agent
java·langchain·源码分析·rag·langchain4j·aiservices