当前位置: 首页 > news >正文

跨域问题说明

什么是跨域

跨域由于浏览器的同源策略造成的。同源策略是指,通过浏览器脚本发起一次请求(如AJax),这次请求的URL与当前的URL的协议,域名和端口必须相同,如果有一个不相同,则构成跨域。

注意点:

1.非浏览器环境无跨域。

2.跨域针对的是浏览器脚本发起的请求,如地址栏直接输入URL,是不会构成跨域的。

3.跨域是指一次请求,判断该次请求和当前页面URL的协议,域名和端口。

如何解决跨域

一.CORS(跨域资源共享)

原理:服务端通过响应头声明允许的跨域来源、方法和头部。

实现方式

1.Spring Boot配置

  • 局部配置:使用 @CrossOrigin 注解

@RestController
@CrossOrigin(origins = "https://frontend.com", methods = {RequestMethod.GET, RequestMethod.POST})
public class MyController { ... }
  • 全局配置:实现 WebMvcConfigurer

@Configuration
public class CorsConfig implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**").allowedOrigins("https://frontend.com").allowedMethods("GET", "POST").allowCredentials(true); // 允许携带Cookie}
}

2.原生Servlet:在过滤器中设置响应头

response.setHeader("Access-Control-Allow-Origin", "https://frontend.com");

适用场景:前后端分离项目、API服务需开放给特定前端域名

二、反向代理——基础设施层方案

原理:通过同源代理服务器(如 Nginx)转发请求,绕过浏览器限制

server {listen 80;server_name frontend.com;location /api/ {proxy_pass http://backend-server:8080/; # 转发到后端add_header 'Access-Control-Allow-Origin' '*'; # 可选,双重保障}
}

优势

  • 无需修改代码,适用于任何后端语言

  • 可缓存静态资源、负载均衡,提升性能

  • 隐藏真实后端 IP,增强安全性

    适用场景:生产环境部署、微服务架构、多域名整合

http://www.lqws.cn/news/476335.html

相关文章:

  • MaxStateSuper模型详解与实现
  • langchain从入门到精通(十三)——Runnable组件
  • Java面试复习:Java基础、OOP与并发编程精要
  • synchronized 关键字深度解析
  • SAP顾问职位汇总(第25周)
  • SAP金属行业解决方案:无锡哲讯科技助力企业数字化转型与高效运营
  • Vui:轻量级语音对话模型整合包,让交互更自然
  • Python 包管理新选择:全面了解 uv(附 Conda 对比)
  • 931、下降路径最小和
  • 硬件面经-具身机器人通用技术要求
  • Flink SQL Connector Kafka 核心参数全解析与实战指南
  • vue3 el-table 行字体颜色 根据字段改变
  • Flink SourceFunction深度解析:数据输入的起点与奥秘
  • Flink作业三种部署模式:架构、配置与实战应用
  • C++主要知识点详解(引用,内联函数)
  • webpack+vite前端构建工具 - 8 代码分割
  • 生成器函数概念与用法详解
  • 【Clickhouse系列】增删改查:对比mysql
  • Clickhouse官方文档学习笔记
  • FastAPI 入门教程 #06:FastAPI 请求体和数据模型
  • 从零理解鱼眼相机的标定与矫正(含 OpenCV 代码与原理讲解)
  • PostgreSQL全栈部署指南:从零构建企业级高可用数据库集群
  • React Next快速搭建前后端全栈项目并部署至Vercel
  • 《DeepSeek原生应用与智能体开发实践》案例重现
  • 关于数学函数和数据类型扩展的详细讲解(从属GESP二级)
  • 30天pytorch从入门到熟练(day1)
  • Mybatis-Plus支持多种数据库
  • 【机器学习四大核心任务类型详解】分类、回归、聚类、降维智能决策指南
  • 多项目预算如何集中管控与动态调整
  • 将Linux装进口袋: Ubuntu to Go 制作