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

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

一、为什么有跨域

跨域问题本质上是由于浏览器的同源策略(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 的连接不受同源策略的限制,因此可以用于实现跨域通信。

http://www.kler.cn/a/395434.html

相关文章:

  • java 随机生成验证码
  • 给阿里云OSS绑定域名并启用SSL
  • Ceph的pool有两种类型
  • 逐行加载 HTML 内容并实时显示效果:使用 wxPython 的实现
  • 深度学习--正则化
  • uniapp在app模式下组件传值
  • 一文读懂 Web 安全
  • nmap-converter转化nmap输出表格格式
  • JavaEE 重要的API阅读
  • 飞凌嵌入式RK3576核心板已适配Android 14系统
  • 一键生成本地SSL证书:打造HTTPS安全环境
  • 期权懂|上证50ETF期权的交易时间是什么时候?
  • 图像处理学习笔记20241115
  • JDK自带JVM工具
  • 大语言模型的算力共享体系中,Reduce、LayerNorm和Broadcast操作
  • 飞牛云fnOS本地部署1Panel服务器运维管理面板并搭建Halo个人博客
  • 计算机网络学习笔记-3.3以太网和局域网
  • 动手学深度学习70 BERT微调
  • ffmpeg自动手动编译安装
  • 如何查看库函数的描述、定义以及所需要的头文件
  • OpenAI模型whisper 音频转文本
  • Cloudflare代理后的https连接的建立还是从源客户端到服务器端握手协商的连接吗
  • 【C++】深入理解自定义 list 容器中的 list_iterator:迭代器实现详解
  • 低成本出租屋5G CPE解决方案:ZX7981PG/ZX7981PM WIFI6千兆高速网络
  • Git分支详解
  • vue3 + naive ui card header 和 title 冲突 bug