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

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

跨域问题的产生源于浏览器的同源策略(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("*");  
    }  
}
相关推荐
杨杨杨大侠9 分钟前
DeepSeek Harness:连 Agent Loop 都能替换的插件架构
java·人工智能·agent
SL_staff9 分钟前
私有化低代码运维三重雷区:JVS开源栈中的Kafka/ES/RabbitMQ治理实践
java·低代码·全栈
yuniko-n10 分钟前
【算法】约瑟夫环问题
java·算法
郝亚军20 分钟前
manifest 中 `sha256` 与 `signValue` 的作用
java·开发语言·数据结构
譕痕34 分钟前
stripe 实例
java·开发语言·stripe·checksession
墨子夕42 分钟前
设计模式——Java × Python 双语言精讲 · 23 个经典模式 + 现代演进(前言篇)
java·开发语言·设计模式
骇客野人1 小时前
Linux 全套实操方案(含目录详解、文件传输、日志、文件规范、环境变量、Java 应用部署运维)
java·linux·运维
唠点键盘之外的1 小时前
29 切片的权限隔离(实战篇):Milvus + Spring AI,从 0 搭一条带权限过滤的检索链路
人工智能·spring·milvus
.Bryce.1 小时前
MCP+A2A+ANP,Agent通信协议的完整知识地图
java·人工智能·后端·agent·通信协议
SL_staff1 小时前
规则引擎选型陷阱:为什么QPS不是JVS-Rules对比Drools的核心指标
java·开源·全栈