记录一下跨域的问题,讲讲跨域

一、为什么有跨域

跨域问题本质上是由于浏览器的同源策略(Same Origin Policy)引起的。这个策略是为了增强网页的安全性,防止恶意网站获取用户的敏感信息。也就是说经过浏览器的才有跨域,在前端代码中进行数据请求的时候往往都要注意跨域的问题,而这个问题在后端是不存在,后端可以调用另外一个后端的接口。

二、怎么样算跨域

浏览器的同源策略指出URL 中的协议、域名和端口号必须完全相同

也就是http跟https,哪怕域名端口号相同都是不同的。

举例:

http://127.0.0.1:8080

https://127.0.0.1:8080

http://127.0.0.1:8081

http://127.0.0.1:8082

都属于跨域。

三、前端跨域的作用

前端(浏览器端)请求跨域限制的原因主要是为了保护用户的安全。 当您在浏览器中访问一个网站(例如 https://example.com)时,该网站的 JavaScript 代码可以尝试访问其他源(例如 https://anotherdomain.com)的资源。如果没有限制,一个恶意网站可能会通过 JavaScript 获取另一网站用户的敏感数据,比如 cookies、账户信息等。

四、为什么后端请求没有跨域

1.环境不同:后端应用服务器(例如 Node.js、Java EE、Django 等)并不受同源策略的限制。后端服务可以自由地向其他域发起 HTTP 请求,而不会受到浏览器的安全机制阻止。

2.信任模型:后端代码通常运行在可信的环境中,不会直接暴露给用户,因此可以更自由地访问外部 API。

3.业务逻辑设计:后端通常需要与多个服务通信(例如数据库、第三方 API 服务等),这方面的限制较少,因此允许跨域请求。

五、如何解决前端跨域问题

1.CORS(跨源资源共享):后端服务器可以通过设置 CORS 头部来允许特定来源的请求。例如,后端可以在响应头中包含:

Access-Control-Allow-Origin: *

这是很常见的做法,让前端无需再代理直接访问后端

2.JSONP:该方法已经不推荐使用,通过动态添加

3.代理服务器:在开发环境中,可以配置代理,将前端请求的路径代理到后端服务器,从而避免跨域问题。

也是一种常见的做法,通过代理,规避这个问题,如在react中可以使用http-proxy-middleware

  • WebSocket:WebSocket 的连接不受同源策略的限制,因此可以用于实现跨域通信。
相关推荐
李小轰_Rex36 分钟前
零开销 AI 数字人方案|Live2D 数字人驱动方案分享
前端·aigc
ModyQyW43 分钟前
vite-plugin-uni-manifest 0.7:在 uni-app 读取之前生成
前端·uni-app
我命由我123451 小时前
Python 实用操作 - 文件操作(打开与关闭文件、读取文件、文件写入)
java·开发语言·前端·javascript·数据库·python·java-ee
修炼的dance1 小时前
批量转码前用 ffprobe 筛一遍,36 个文件能跳过 26 个
前端
费曼学习法1 小时前
从 0 到 1 上手 Super-Agent 架构:任务拆解、工具路由与失败回滚的三段实现
前端
2026小鱼AI1 小时前
当 LLM 生成的教学设计“不合格”:结构化校验、局部重生成与并发下的质量漂移
前端
疯华整猫1 小时前
借助 Trae 复刻百度网盘“无权限摇一摇”检测:Android 传感器 AI 辅助实战
前端
deli0071 小时前
流式输出为什么一段一段蹦?拆开 SSE 分块实测 20094 个乱码
前端
不一样的少年_1 小时前
为什么你写的 Agent 一报错就死循环?很多人都漏掉了这层“错误自救与熔断”机制
前端·后端·agent
857god1 小时前
做了个匿名聊天站,我把 7 个前端坑踩了一遍
前端