web — 跨域问题及解决方案

web — 跨域问题及解决方案

一、概念

  1. 跨域:

    当一个请求 url 的协议、域名、端口三者之间任意一个与当前页面 url 不同即为跨域。
    在这里插入图片描述

  2. 同源策略:

    • 同源指:协议、域名、端口三者相同

    • 浏览器最核心最基本的安全功能,缺少了同源策略,浏览器容易受到 XSS、CSFR等攻击。

  3. HTML 特殊标签:

    <link> <script> <img> <frame> 等这些标签具有跨域特性,可以直接访问。
    

二、解决方案

1. Jsonp

  • 原理:

    前端通过 <script> 请求后端接口,后端返回方法的执行:
    如:前端定义好 test()方法,请求后端返回 test(),给前端进行执行
    在这里插入图片描述

  • 实现:
    在这里插入图片描述

2. CORS(服务器端解决)

  • 原理:
    在这里插入图片描述

3. Proxy 代理

  • 原理:

    通过中间件来实现,浏览器有跨域限制,但服务器没有跨域限制,所以中间件就是服务器(服务器对数据进行了转发而已)。

  • 实现:

    vue项目:

    开发环境时候使用,生成环境使用nginx

    // vue.config.js
    module.exports = {
      devServer: {
        port: 3000,
        proxy: {
          '/jeecg-boot': {
            target: 'http://localhost:8080', //请求本地 需要jeecg-boot后台项目
            ws: false,
            changeOrigin: true              // 跨域
          },
        }
      },
    
      lintOnSave: undefined
    }
    

4. nginx(反向代理)

在这里插入图片描述

5. WebSocket

6. postMessage

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值