Intern Day46 - 如何解决跨域问题
什么是跨域
跨域的概念:当一个请求URL的协议、域名、端口三者间任意一个与当前页面的URL不同即为跨域。
http://www.test.com:8080/abcdefg
http协议、www子域名、test.com域名、8080端口(默认80
)、abcdefg资源文件
undefined
跨域问题:跨域指的是浏览器不能执行其他网站的脚本。是由浏览器的同源策略造成的。
什么是同源策略
同源是指:“协议+域名+端口”三者相同,即便两个不同的域名指向同一个ip地址,也非同源。
是不是不是浏览器就没有这个问题?对的,跨域只发生在浏览器。
但是HTML特殊标签,比如<link>
、<img>
等这种标签是可以跨域的,具有跨域特性,可以直接访问,并不会报错。
同源策略目的:是浏览器最核心最基本的安全功能,如果缺少了同源策略浏览器很容易受到XSS、CSFR等攻击。保证用户信息安全,防止恶意网站窃取数据。同源策略是必须的,否则cookie可以共享。
跨域的解决方案
-
Proxy代理(用的最多):通过中间件来实现,浏览器有跨域限制,但是服务器没有跨域限制,所以中间件其实就是服务器(服务器多数据进行了转发而已)
-
Jsonp:利用script标签,远程动态加载js代码
-
CORS(服务器端解决)
-
Ngnix反向代理
-
Websocket
-
postMessage
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」