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

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

跨域问题的产生源于浏览器的同源策略(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("*");  
    }  
}
相关推荐
小bo波38 分钟前
枚举实战
java·设计模式·枚举·后端开发·代码重构
夜微凉41 小时前
三、Spring
java·后端·spring
橘右今1 小时前
2026 Java后端高频面试宝典
java·开发语言·面试
xyzzklk2 小时前
解决Salesforce无法向外发送邮件
android·java·开发语言·网络·crm·salesforce·客户关系管理
biubiubiu07062 小时前
SpringBoot关于外部化配置
java·spring boot·spring
Full Stack Developme2 小时前
Spring Bean 依赖注入
python·spring·log4j
zzz_23682 小时前
【Spring】面试突击系列(二):SpringBoot 入门与自动配置原理
java·spring boot·spring
Full Stack Developme3 小时前
Spring AOP 与 AspectJ
java·后端·spring
快乐的木子李3 小时前
最新版Maven免安装配置教程
java·maven
wuminyu4 小时前
Java锁机制之Java对象重量级锁源码剖析
java·linux·c语言·jvm·c++