VUE跨域、常用解决跨域的方法

article/2025/10/3 16:26:43

当我们遇到请求后台接口遇到 Access-Control-Allow-Origin 时,那说明跨域了。

跨域是因为浏览器的同源策略所导致,同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,同源是指:域名、协议、端口相同

解决跨域常用方法:

一、VUE2.0中常用proxy来解决跨域问题

1、在vue.config.js中设置如下代码片段

module.exports = {dev: {// PathsassetsSubDirectory: 'static',assetsPublicPath: '/',proxyTable: { // 配置跨域'/api':{target:`http://www.baidu.com`, //请求后台接口changeOrigin:true, // 允许跨域pathRewrite:{'^/api' : '' // 重写请求}}},
}

 2、创捷axioss实例时,将baseUrl设置为 ‘/api’

const http = axios.create({timeout: 1000 * 1000000,withCredentials: true,BASE_URL: '/api'headers: {'Content-Type': 'application/json; charset=utf-8'}
})

二、JSONP解决跨域

Jsonp(JSON with Padding) 是 json 的一种"使用模式",可以让网页从别的域名(网站)那获取资料,即跨域读取数据。

<!DOCTYPE html><html><head><meta charset="utf-8"></head><body><div id="textID"></div><script type="text/javascript">function text_jsonp(req){// 创建script的标签var script = document.createElement('script');// 拼接 urlvar url = req.url + '?callback=' + req.callback.name;// 赋值urlscript.src = url;// 放入头部document.getElementsByTagName('head')[0].appendChild(script);}</script></body></html>

 三、CORS是跨域资源共享(Cross-Origin Resource Sharing),以 ajax 跨域请求资源,支持现代浏览器,IE支持10以上

在CORS请求,头部信息中包含以下三个字段:

Access-Control-Allow-Origin: 该字段是必须的。它的值要么是请求时Origin字段的值,要么是一个*,表示接受任意域名的请求,

Access-Control-Allow-Credentials: 可选,值为布尔值,表示是否允许发送Cookie。默认情况下,Cookie不包括在CORS请求之中。设为true,即表示服务器明确许可,Cookie可以包含在请求中,一起发给服务器。这个值也只能设为true。如果要发送Cookie,Access-Control-Allow-Origin必须设置为必须指定明确的、与请求网页一致的域名

Access-Control-Expose-Headers:可选。CORS请求时,XMLHttpRequest对象的getResponseHeader()方法只能拿到6个基本字段:Cache-ControlContent-LanguageContent-TypeExpiresLast-ModifiedPragma。如果想拿到其他字段,就必须在Access-Control-Expose-Headers里面指定

详细讲解请查看阮大神的文章,传送门附上:CORS详解

四、iframe实现跨域

iframe(src){//数组if(Array.isArray(src)){this.docs.visible = true;}else{this.docs.visible = false;}this.link  = srcif(this.docs.visible == false){if(this.$refs['ruleIframe'] && this.$refs['ruleIframe'].querySelector('iframe')){this.$refs['ruleIframe'].querySelector('iframe').remove()    //删除自身}var iframe = document.createElement('iframe');iframe.width = '100%';iframe.height = '100%';iframe.setAttribute('frameborder','0')iframe.src = src;                this.append(iframe)}},//创建元素 防止  获取不到 ruleIframe 递归append(iframe){if(this.$refs['ruleIframe']){this.$refs['ruleIframe'].appendChild(iframe);return}setTimeout(()=>{this.append(iframe);},500)    },

感谢各位看官 阅读~

希望能帮助到大家


http://chatgpt.dhexx.cn/article/2HiupNLb.shtml

相关文章

什么是跨域?怎么解决跨域问题

文章目录 一、同源策略二、同源策略案例三、什么是跨域四、跨域解决方法1.ajax的jsonp概念核心用法 2.CORS方式3.nginx 转发 一、同源策略 同源策略&#xff0c;是由 Netscape 提出的一个安全策略&#xff0c;它是浏览器最核心也是最基本的安全功能&#xff0c;如果缺少同源策…

什么是跨域以及为什么会出现跨域以及跨域的解决方案

1.什么是跨域&#xff1f; 跨域&#xff1a;指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的&#xff0c;是浏览器对javascript施加的安全限制。 • 同源策略&#xff1a;是指协议&#xff0c;域名&#xff0c;端口都要相同&#xff0c;其中有一个不同都会产…

什么是跨域?如何解决?

一、什么是跨域&#xff1f; 跨域&#xff1a;指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的&#xff0c;是浏览器对javascript施加的安全限制。 例如&#xff1a;a页面想获取b页面资源&#xff0c;如果a、b页面的协议、域名、端口、子域名不同&#xf…

什么是跨域? 出现原因及解决方法

目录 一、什么是跨域二、为什么有跨域问题&#xff1f;三、解决跨域问题的方案1.Jsonp2.nginx3.CORS3.1 什么是cors3.2 原理 四、GateWay网关中实现跨域步骤 一、什么是跨域 跨域&#xff1a;浏览器对于javascript的同源策略的限制 。 同源政策的目的&#xff0c;是为了保证用…

什么是跨域及解决跨域都有哪些方法?

一.同源策略 浏览器为了隔离潜在的恶意文件&#xff0c;使用同源策略&#xff0c;限制从一个源加载的文档或脚本和另一个源的资源进行交互&#xff08;不同源之间的文档&#xff0c;资源的交互&#xff09;; 通俗的理解&#xff1a;浏览器规定&#xff0c;A 网站的 JavaScript…

什么是跨域,怎么解决跨域?

1.什么是跨域 跨域是指浏览器不能执行其他网站的脚本。它是浏览器同源策略造成的&#xff0c;是浏览器对JS实施的安全限制。 2.常见的跨域场景 3.什么是同源策略&#xff1f; &#xff08;所谓同源是指&#xff1a;“域名”、“协议”、“端口”均为相同&#xff09; 同源策略/…

最常见的六种跨域解决方案

目录&#xff1a; 前言&#xff1a;什么是跨域&#xff1f;JSONPCORS搭建Node代理服务器Nginx反向代理postMessageWebsocket总结 前言&#xff1a;什么是跨域&#xff1f; 跨域就是当在页面上发送ajax请求时&#xff0c;由于浏览器同源策略的限制&#xff0c;要求当前页面和…

什么是跨域?跨域解决方法

一、为什么会出现跨域问题 出于浏览器的同源策略限制。同源策略&#xff08;Sameoriginpolicy&#xff09;是一种约定&#xff0c;它是浏览器最核心也最基本的安全功能&#xff0c;如果缺少了同源策略&#xff0c;则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策…

SpringBoot解决跨域问题

遇到前端跨域访问问题&#xff0c;类似于这样的&#xff1a; 在Springboot项目里加上这个配置文件CorsConfig.java&#xff0c;重启之后即可实现跨域访问&#xff0c;前端无需再配置跨域。 import org.springframework.context.annotation.Bean; import org.springframework…

搭建 PHP 开发环境(手把手图文教程)

都 2020 年了&#xff0c;你还在老老实实地按照下载Apache、安装MySQL、安装PHP、配置Apache 步骤来搭建PHP开发环境吗&#xff1f; 下面介绍一种一键配置方法&#xff1a;炒鸡好用的 phpStudy 下载安装 phpStudy 我们在这里可以看到&#xff0c;phpStudy 内置了apache、ngin…

搭建PHP环境

搭建PHP环境 对于初学者,推荐在 Windows 操作系统下使用 XAMPP 一键安装 PHP 集成开发环境(Apache、PHP、MySQL),XAMPP 提供 PHP 7 的安装版本,读者只需要到官方网站 https://www.apachefriends.org/download.html 下载即可。 根据自己需要下载相应的版本,下载后得到一个…

win下搭建php环境的方法

win下搭建php环境的方法 下载apache并配置&#xff1b;2、下载PHP并将其解压到wamp目录下的php文件夹&#xff1b;3、下载安装mysql&#xff1b;4、修改好配置文件即可。 本文操作环境&#xff1a;Windows7系统&#xff0c;PHP5.6版&#xff0c;Dell G3电脑。 window10下搭建p…

mac pro M1(ARM)安装:php开发环境

0. 引言 最近在处理各个语言的加密算法&#xff0c;正好需要安装php环境&#xff0c;特此记录&#xff0c;以供后续参考 1. 安装php 1、安装php包管理工具composer brew install composer2、安装php brew install php # 同时可以指定版本安装 brew install php8.0 # 查…

php mac 开发环境搭建_Mac搭建php的开发环境(图文详解)

搭建php的开发环境(图文详解) 这篇文章主要介绍了Mac下搭建php开发环境教程&#xff0c;Mac OS X内置了Apache 和 PHP&#xff0c;这样使用起来非常方便。本文以Mac OS X 10.6.3为例,需要的朋友可以参考下 Mac OS X;内置了Apache和;PHP&#xff0c;这样使用起来非常方便。本文以…

Linux搭建PHP开发环境

集百家之所长搭建的PHP环境 文章目录 集百家之所长搭建的PHP环境1安装SSH和Xftp2安装宝塔面板3安装Mysql4 安装ApachePHP 安装配置Apache至此环境搭建成功 1安装SSH和Xftp B站安装教程 2安装宝塔面板 可以这个安装教程 3安装Mysql 安装Mysql教程 指令如下 # 创建文件目录 …

win10下PHP开发环境搭建

win10下PHP开发环境搭建 安装Apache下载httpd-2.4.41-win64-VS16.zip解压修改配置文件安装服务运行 安装PHP下载解压 安装Mysql整合Apache、PHPApache配置修改PHP配置修改Mysql配置试验 IDEA支持PHP报错Apache启动“发生服务特定错误: 1.”Cannot load /PHP/php5apache2_4.dll …

PHP开发环境搭建与工具

PHP是跨平台的&#xff0c;所以我们可以在Mac OS&#xff0c;Windows&#xff0c;Linux等主流操作系统中进行开发&#xff0c;最为经典的也是最被认可的是Lamp/Lnmp结构&#xff0c;它们是(Linux apache/nginx MySQL PHP)的缩写&#xff0c;我们先简单的用非术语来介绍一下这几…

PHP开发环境搭建工具有哪些?

对于php开发小白来说搭建一个php运行环境就是一道坎&#xff01; 因为要做php开发&#xff0c;搭建一个能够运行php网站的服务器环境是第一步&#xff0c;传统的php环境软件非常复杂&#xff0c;好在很多公司开发了一键搭建php安装环境&#xff0c;一键进行php环境配置&#x…

open与fopen

1.在将open与fopen之前&#xff0c;先讲文件描述符&#xff1a; 当一个可执行程序运行以后&#xff0c;就变成进程&#xff0c;操作系统会为每个进程分配一定的虚拟内存空间&#xff0c;32位操作系统就分配4G。虚拟内存空间结构如下图所示&#xff1a; 1G是内核空间使用&#…

open与fopen的区别

函数原型 FILE *fopen(const char *filename, const char *mode); 参数 filename-- 这是 C 字符串&#xff0c;包含了要打开的文件名称。 mode-- 这是 C 字符串&#xff0c;包含了文件访问模式。 功能 使用给定的模式mode打开filename所指向的文件。 1.层次不同 open是系统调用…