vue项目中常用解决跨域的方法总结(CORS和Proxy)
作者:是大林的林吖 发布时间:2024-04-28 09:33:05
一、什么是跨域?
跨域问题的出现是因为浏览器的同源策略问题。所谓同源就是必须有以下三个相同点:协议相同、主机相同、端口相同。如果其中有一项不同,即出现非同源请求,就会产生跨域。当我们请求一个接口的时候,出现如:Access-Control-Allow-Origin 字眼的时候说明请求跨域了
二、如何解决跨域?
跨域的解决方案:
jsonp
cors
Node中间件代理(两次跨域) 即 Proxy
nginx反向代理 CORS支持所有类型的HTTP请求,是跨域HTTP请求的根本解决方案
JSONP只支持GET请求,JSONP的优势在于支持老式浏览器,以及可以向不支持CORS的网站请求数据。
不管是Node中间件代理还是nginx反向代理,主要是通过同源策略对服务器不加限制。
日常工作中,用得比较多的跨域方案是cors和nginx反向代理
主要解释CROS和Proxy两种方式
1、CROS
CROS是 Cross-Origin Resource Sharing的缩写,翻译过来就是跨域资源共享的意思。它由一系列传输的HTTP头组成,这些HTTP头会决定浏览器是否阻止前端 JavaScript代码获取跨域请求的响应。
CORS的实现比较简单方便,只需要增加一些 HTTP头,让服务器能声明允许的访问来源。只要后端实现了 CROS就实现了跨域。
2、Proxy(代理)
通过启动本地服务器进行代理转发目标服务器。而跨域只针对于浏览器,对于node服务发出的请求是不会出来跨域的,从而解决了跨域的问题。
在vue.config.js文件
1、可配置多个不同的proxy
devServer: {
proxy: {
'/api': {//代理标识,一般是每个接口前的相同部分
target: 'http://23.15.11.15:8000', // 这里写的是访问接口的域名和端口号
changeOrigin: true, // 允许跨域请求
pathRewrite: { // 重写路径,替换请求地址中的指定路径
'^/api': '/user'
}
},
'/login': {
target: 'http://23.15.11.15:8000',
changeOrigin: true,
pathRewrite:{
'^/login':'' //替换成空
}
}
}
},
示例:
http://localhost:8080/api/test --> http://23.15.11.15:8000/user/test
http://localhost:8080/login/index–> http://23.15.11.15:8000/index
2、对所有的接口都代理
devServer: {
proxy: 'http:/www.ljc.com'
}
示例:
http://localhost:8080/api/test --> http://www.ljc.com/api/test
http://localhost:8080/login/index–> http://www.ljc.com/login/index
来源:https://blog.csdn.net/qq_45616003/article/details/125556040
猜你喜欢
- Python下一切皆对象,每个对象都有多个属性(attribute),Python对属性有一套统一的管理方案。__dict__与dir()的
- 前言如果你搜一圈 "Fabric "关键字,你会发现 90% 的资料都是过时的,因为现在 Fabric 支持 Pytho
- 算法11、分小数和整数:如果小数点个数为1,则可能是小数。如小数点个数为0,则可能是整数。小数点个数非0也非1,那么就不是数字。2、如果是小
- 前面我通过一篇文章讲述了如何爬取CSDN的博客摘要等信息。通常,在使用Selenium爬虫爬取数据后,需要存储在TXT文本中,但是这是很难进
- 问题你想使用一个装饰器去包装函数,但是希望返回一个可调用的实例。 你需要让你的装饰器可以同时工作在类定义的内部和外部。解决方案为了将装饰器定
- 背景:由于需要对ocr识别系统的表格识别结果做验证,通过返回的json文件结果对比比较麻烦,故需要将json文件里面的识别结果还原为表格做验
- 前言当今,随着计算机技术的发展,摄像头已经成为了人们生活中不可或缺的一部分。而Python作为一种流行的编程语言,也可以轻松地控制和操作摄像
- 目录1、背景2、C# 语言3、Python 语言4、技术分析1、背景我们先看这个题目:标题:137. 只出现一次的数字 II难度:中等htt
- 实现功能excel表格中有4列数,分别为RMF计算得到的 β,γ,势能面及组态,需要挑选出相同 β 值下势能面最低时的组态。为了减小数据量,
- 本人电脑是windows系统,装了Python3.7版本,但目前tensorflow支持最新的python版本为3.6,遂想再安装Pytho
- 之前使用beego的http库的时候,有的情况需要下载文件。beego是能实现,但就是有点问题:不支持回调,没法显示下载速度,这在日常开发中
- 1、主题如何使用Pycahrm内置终端以及远程SSH工具。2、准备工作Pycharm版本为3.0或更高连接SSH服务器3、使用SSH客户端4
- 首先来看一下代码:chars = "abcd"tmp = []for char in chars: tmp.append
- 简单介绍下:CSS 图片拼合 (CSS sprites) 可有效降低图片文件的 HTTP 连接请求数. 多个图片将以一定间距合并为一个大图片
- 目录提问:回答:真实情况:知识点结论:总结提问:mysql的字段,unsigned int(3), 和unsinged int(6), 能存
- 边缘在人类视觉和计算机视觉中均起着重要的作用。人类能够仅凭一张背景剪影或一个草图就识别出物体类型和姿态。其中OpenCV提供了许多边缘检测滤
- 因为最近的任务有用到目标检测,所以昨天晚上、今天上午搞了一下,快速地了解了目标检测这一任务,并且实现了使用opencv进行目标检测。网上资料
- 前言为了便于精准排查问题,需要将当前的请求信息与当前执行的 SQL 信息设置对应关系记录下来,记录的 SQL 信息包括:执行 SQL 的当前
- 本文实例分析了Python字符串和文件操作常用函数。分享给大家供大家参考。具体如下:# -*- coding: UTF-8 -*-'
- 问题背景:日常对Sql Server 2005关系数据库进行操作时,有时对数据库(如:Sharepoint网站配置数据库名Sharepoin