如何解决跨域问题

news/2024/11/15 3:32:36/

什么是同源策略?

同源策略,它是由Netscape提出的一个著名的安全策略。
同源策略是浏览器的行为,是为了保护本地数据不被JavaScript代码获取回来的数据污染,因此拦截的是客户端发出的请求回来的数据接收,即请求发送了,服务器响应了,但是无法被浏览器接收。
同源,是指协议、域名、端口都相同。

什么是跨域?

协议、域名和端口号中有一个不相同时就会产生跨域。 跨域是因为浏览器的同源策略限制,是浏览器的一种安全机制,跨域是客户端问题,服务端之间是不存在跨域的。

例如:http://199.168.3.1:8080 与 https://199.168.3.1:8080是不同源的,因为协议不同。http 和 https 为协议,199.168.3.1 为域名,8080 为端口,只要有一处不同,就是不同源。

解决跨域的方法

1. jsonp
原理: 动态生成 script 标签,通过 src 属性进行加载。浏览器不会拦截 script 的 src 属性。
缺点: 不支持 POST 请求,只支持 GET 请求。
应用场景: 因为只支持 GET 请求,所以使用的场景较少。例如:有些第三方数据接口可能会使用 jsonp 解决跨域问题,比如想要知道最近的天气情况,就会去调用中国气象网的接口,这个时候中国气象网有可能就会暴露一个 jsonp 的接口去解决跨域问题。

2. 中间服务器代理
假设前端部署地址为:127.0.0.1:8000;
目标服务器地址为:127.0.0.1:8888;
这时候因为端口号不同,所以是跨域的。
因为跨域只存在浏览器端,服务器之间不存在跨域问题,所以可以由后端人员搭建一个中间服务器代理,地址为:127.0.0.1:8000;这时候浏览器通过直接访问中间服务器代理,再由中间服务器代理去访问目标服务器地址就可以解决跨域问题。
请添加图片描述

3. CORS跨域资源共享(工作中常用的方案)
原理: 服务器端进行配置,加一个响应头。
在 app.js 文件中进行配置如下内容即可解决跨域问题。
在这里插入图片描述

4. Vue反向代理配置
在前端的代码配置文件 vue.config.js 文件中进行配置。
在这里插入图片描述
“/api”:定义什么样的接口需要进行反向代理。这里是以 /api 开头的接口就需要反向代理。
“target”:跨到哪里去,即目标服务器的地址。
“pathRewrite”:重写你的地址,以 ^/api 开头的全部换成 / 。因为请求的接口会拼在 target 之后形成完整的路径,假设请求的接口名为 /api/login 则拼接后即: http://127.0.0.1:8888/api/private/v1/api/login,又因为以 ^/api 开头的全部换成 / ,所以最后结果是 http://127.0.0.1:8888/api/private/v1/login 。


http://www.ppmy.cn/news/3036.html

相关文章

CIDR格式网络策略值设置方式

CIDR的格式是IP网段/网络ID,斜杠左面的是网络IP段,斜杠右面是网络ID。如果网络用的是IPV4,它最大有效值是32,它的作用本质上是用来表示网络策略所用的子网掩码二进制里的1有多少个,也就是网络ID的位数。 传统的IPV4-t…

Redis框架(五):大众点评项目 商品目录 添加Redis缓存

大众点评项目 商品目录 添加Redis缓存需求:基于Redis查询商品信息业务实现给商品添加缓存给店铺类型添加缓存总结和业务流程SpringCloud章节复习已经过去,新的章节Redis开始了,这个章节中将会回顾Redis实战项目 大众点评 主要依照以下几个原则…

vivado tcl开发流程

本文以简单的led灯为例,阐述基于tcl的Vivado开发流程。 文件内容编写如下: led.v timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 2022/12/12 14:57:22 // Design Name: // Module Name: alu // Project Name: // Target De…

CMake交叉编译工具编写

CMake交叉编译工具编写 CMake交叉编译工具编写CMake交叉编译工具编写前言一、编写toolchain.cmake二、编写CMakeLists.txt三、编写build.sh前言 在嵌入式设备应用时,需要在X86架构下编译板卡需要的ARM架构的文件,需要配置交叉编译器等来完成。这时就需要…

matlab智能算法之遗传算法

智能算法之遗传算法智能算法之遗传算法1.背景2.算法3.案例3.1 案例求解二元函数的最大值智能算法之遗传算法 1.背景 2.算法 3.案例 3.1 案例求解二元函数的最大值 例1:计算二元函数f(x,y)20x2y2−10∗(cos(2πx)cos(2πy))f(x,y)20x^2y^2-10*(cos(2\pi x)cos(2…

手写js——继承

原型链继承 所谓 函数 也就是 函数 Father其本身,也叫作构造函数 ,当一个函数被创建的同时,也会为其创建一个 prototype 属性,而这个属性,就是用来指向 函数原型,的我们可以把 prototype 理解为 Father的一…

教育的本质——采用不同学习方式,学习者在两周后还能记住的内容有多少

目录 一、学习金字塔模型 二、学习曲线 三、左右脑交替学习法 一、学习金字塔模型 “学习金字塔模型”,人们学习的效率一共分为七个层次: 第一层 ~ 第四层:这是我们最熟悉不过的形式,在学生时代,老师在上面讲课、…

冯诺依曼体系和操作系统概念

Ⅰ. 冯诺依曼体系结构 我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。 截至目前,我们所认识的计算机,都是有一个个的硬件组件组成 输入单元:包括键盘, 鼠标&#xf…