不同域的页面如何通信(跨域)
什么是跨域:不符合同源策略,也就是协议、IP、端口有一个不一致就是跨域,从而限制交互行为。
为什么会出现浏览器跨域限制:避免数据出现安全问题,如果没有跨域限制,可以随意读取任意域名下的cookie,很容易发生CSRF攻击。
对于浏览器来说,哪些资源会受到同源策略的限制:DOM、cookie、XMLHttpRequest、第三方插件等。
跨域限制有什么问题:用户无法进行交互行为,上网的意义在何处?
如何解决跨域问题:
1、服务器代理:http-proxy-middleware--------原理:服务器之间的请求不存在跨域问题
2、nginx代理:配置跨域代码 proxy-pass后面跟一个跨域的地址
3、cors:服务端的代理方式----设置响应头:header(Access-Control-Allow-Origin:*);
4、jsonP(只支持GET):通过script标签引入一个js文件,这个js文件载入成功后会执行我们在url参数中指定的函数,并且把我们需要的json数据作为参数传入。
为什么ajax会造成跨域:
受同源策略的限制,协议、ip、端口有一个不同就是跨域。如果跳转页面了,不存在跨域。ajax是不刷新页面,不进行跳转,所以ajax具有跨域问题。利用cors、服务器代理和nginx代理可以解决。
jsonP的原理:
表单中的action、script中的src、a标签和link标签中的href都会造成页面的跳转,所以这不存在跨域的问题。jsonP的原理是利用script的src进行跳转,前端将函数传到服务端,服务端将函数加工后再返回,所以jsonp和ajax不是一回事。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结