web — 跨域问题及解决方案

news/2024/7/10 0:09:01 标签: vue, nginx, web, 中间件
webkit-tap-highlight-color: rgba(0, 0, 0, 0);">

文章目录

  • web — 跨域问题及解决方案
    • 一、概念
    • 二、解决方案
      • 1. Jsonp
      • 2. CORS(服务器端解决)
      • 3. Proxy 代理
      • 4. nginx(反向代理)
      • 5. WebSocket
      • 6. postMessage

web____1">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
    }
    

nginx_83">4. nginx(反向代理)

在这里插入图片描述

5. WebSocket

6. postMessage


http://www.niftyadmin.cn/n/1663586.html

相关文章

ios 各种权限整理

2019独角兽企业重金招聘Python工程师标准>>> 联网权限 引入头文件 import CoreTelephony; 应用启动后&#xff0c;检测应用中是否有联网权限 CTCellularData *cellularData [[CTCellularData alloc]init]; cellularData.cellularDataRestrictionDidUpdateNotifier…

springboot — 非Spring环境获取Spring的Bean

文章目录springboot — 非Spring环境获取Spring的Bean一、工具类二、使用springboot — 非Spring环境获取Spring的Bean 一、工具类 代码如下&#xff1a; package org.jeecg.common.util;import javax.servlet.http.HttpServletRequest;import org.jeecg.common.constant.Se…

BZOJ1216 操作系统 [优先队列]

Description 写一个程序来模拟操作系统的进程调度。假设该系统只有一个CPU&#xff0c;每一个进程的到达时间&#xff0c;执行时间和运行优先级都是已知的。其中运行优先级用自然数表示&#xff0c;数字越大&#xff0c;则优先级越高。 如果一个进程到达的时候CPU是空闲的&…

RabbitMQ — docker 安装 RabbitMQ

RabbitMQ — docker 安装 RabbitMQ 一、简介 rabbitmq&#xff1a; 数据一致性 二、安装 1. docker方式 docker拉取和启动&#xff1a; 推荐以下方式2和3&#xff0c;方式2和3安装配置完&#xff0c;在web管理界面可以直接通过 admin / admin进行登录 方式1&#xff0c;官方…

RabbitMQ — docker安装RabbitMQ,Java + Python集成

文章目录RabbitMQ — docker安装RabbitMQ&#xff0c;Java Python集成一、简介二、安装1. docker方式2. rabbitmq常用命令2.1 授权账号和密码三、rabbitmq基本知识四、代码集成1. Java2. Python五、业务设计参考资料RabbitMQ — docker安装RabbitMQ&#xff0c;Java Python集…

python — slice切分

文章目录python — slice切分一、slicepython — slice切分 一、slice a[i:j]&#xff1a; 表示遍历 a[i] 到 a[j-1] 元素当 i 缺省时&#xff0c;默认为0。例如&#xff1a;a[:3]相当于 a[0:3]当 j 缺省时&#xff0c;默认为len(a)。例如a[1:] 相当于 a[1:len(a)]当 i&#x…

pytorch — 学习笔记

文章目录pytorch — 学习笔记一、文档二、pytorch语法&#xff08;一&#xff09; 辅助函数&#xff08;二&#xff09;数据结构三、pytorch用法&#xff08;一&#xff09;自动求导1. 张量2. 梯度3. 计算图4. inplcae5. 动态图&#xff08;二&#xff09;神经网络1. torch.nn2…

计算机基础 — 位运算

文章目录计算机基础 — 位运算一、位运算简介二、位运算分类计算机基础 — 位运算 一、位运算简介 现代计算机中所有的数据以二进制的形式存储在设备中&#xff0c;即 0、1 两种状态。 计算机对二进制数据进行的运算(、-、*、/)都是叫位运算&#xff0c;即将符号位共同参与运…