proxy跨域不生效_前端开发:深入使用proxy代理解决跨域问题

在前端领域里面,跨域指的是浏览器允许向服务器发送跨域请求,进而克服Ajax只能同源使用的局限性限制。同源策略是一种约定,而且是浏览器中最基本也是最核心的安全功能,若缺少了该策略,浏览器非常容易被***;同源就是指“协议+域名+端口”都一样,就算有两个不同域名指向同一个IP地址也不能是同源。同源策略只有在浏览器中存在,服务器中确不存在,所以遇到需要跨域请求的地址将其转发服务器后委托服务器去请求即可。

一、实际开发中遇到的跨域问题解决方法

先来举一个简单的例子说明一下:

首先来看一下跨域引起的报错提示:

cd9c4b921022a8ac05ffe3e19a6a81cc.png

解决步骤:打开Vue项目,然后在项目中找到config文件夹里面的index.js文件,然后找到proxyTable,然后添加以下代码段即可:proxyTable: {

['/java/mgr-auth']: {  //替换代理地址名称

target: 'http://dev-cloud.bc.com/mgr-auth', //代理地址

changeOrigin: true, //可否跨域

pathRewrite: {

['^/java/mgr-auth']: '', //重写接口,去掉/java/mgr-auth

}

}

}

d7eb4ce66715be827b314613f3191b77.png

设置完毕之后,重启一下服务,根据实际情况重启项目: npm run serve或者是npm run dev。

aaed4cf26abcd00220f6197d19b0be3e.png

a53a5d368a4b69f032992a37cbfd71d6.png

重启项目之后,在接口封装和调用那里进行设置,最后就可以正常访问接口,跨域问题随之解决。

二、常见的跨域情形

常见的跨域情形通过URL链接来区分主要有6种:

①同域名,不同端口;②同域名,不同文件或者路径;③同域名,不同协议;④域名和域名对应相同的IP;⑤主域名相同,子域名不同;⑥不同域名。

三、跨域解决方法汇总

解决跨域问题,一般可以通过三种方式来解决:①前端项目配置代理;②服务端配置跨域访问;③使用Chrome的扩展插件。

1、前端项目配置代理的方法解决跨域问题

通过前端项目配置代理的方法解决跨域问题,具体步骤参考文章开头的案例来解决。

2、服务端配置跨域访问的方法解决跨域问题

这个需要在服务端进行配置,具体操作设计后台操作,这里不再具体讲解。

3、通过Chrome的扩展插件的方法解决跨域问题

搜索使用Allow CORS: Access-Control-Allow-Origin即可,如果不能正常搜到,请联系本作者来为你解答。

四、代理类型

常见的代理类型大概有四种:①基本代理;②重写路径代理;③支持HTTPS的代理;④把请求代理到同一目标的代理。

1、基本代理的实例module.exports = {

dev: {

proxy: {

'/api': 'http://localhost:8080’

}

}

};

2、重写路径代理的实例module.exports = {

dev: {

proxy: {

'/api': {

target: 'http://localhost:8080’,

pathRewrite: {'^/api' : ''}

}

}

}

};

3、支持HTTPS代理的实例module.exports = {

dev: {

proxy: {

'/api': {

target: 'https://dev-cloud.cc.com',

secure: false

}

}

}

};

4、请求代理到同一目标的代理的实例module.exports = {

dev: {

proxy: [{

context: ['/auth', '/api'],

target: 'http://localhost:8080’,

}]

}

};

以上就是本章全部内容,欢迎关注三掌柜的微信公众号“程序猿by三掌柜”,三掌柜的新浪微博“三掌柜666”,欢迎关注!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/334571.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 静态缓存示例_Java 9 JShell示例:集合静态工厂方法

java 静态缓存示例这篇文章继续从My My Java 9 Features博客文章中探索Java9功能。 在这里,我们在List,Set和Map接口中试验Java9 Collections静态工厂方法。 集合静态工厂方法 Java9使用其新的静态工厂方法使创建不可变列表变得更加容易 有12种Set.of和…

mysql在计算机管理中的路径怎么修改_称重软件中的数据修改怎么知晓?

称重软件称重软件应客户需求,数据允许修改,但不允许删除只能作废。如果数据已修改,该如何知晓该数据是修改过的呢,这就用到了标记。用户修改数据时为保证数据的可追溯性,同样在数据安全方面也有相应的要求,…

pip安装mysql模块_使用pip安装mysql模块for python

我正在尝试使用pip安装mysql模块for python,但遇到了一个错误:mysqlclient.lib(typelib.obj) : error LNK2001: unresolved external symbol __iob_funcmysqlclient.lib(viosslfactories.obj) : error LNK2001: unresolved external symbol __iob_funcmy…

Linux 命令之 apt-get -- APT 软件包管理工具

文章目录 一、命令介绍二、语法格式三、相关文件及目录四、常用命令(一)下载、安装、升级和删除软件包(二)查询和检验软件包(三)执行其它功能五、常用选项(一)安装、升级和删除软件包(二)查询和检验软件包(三)执行其它功能六、参考示例(一)下载、安装、升级和删除…

spring health_为什么Spring的Health会再次向下,向下,向上,向上,向上和向下?...

spring health为什么 我们新JavaScript客户端应用程序会定期调用Grails后端的/health端点,以确定离线状态。 事情开始变得“​​有趣”。 我们免费获得该端点,因为Grails基于Spring Boot,而Spring Boot带有一个名为Spring Boot Actuator的子…

使用JDBC连接数据库(MySQL)的源代码

文章目录JDBC 访问数据库的步骤使用 JDBC 访问数据库的演示代码使用 PreparedStatement 对象查询插入更新删除使用 Statement 对象查询删除JDBC 访问数据库的步骤 将 jdbc 驱劢程序相关的 jar 包 copy 到 WEB-INF/lib 下在 servlet 代码当中,使用 jdbc 访问数据库&…

popupwindow 不抢夺焦点_央视专访“上个厕所就要3000块”的亲历者, 被“坑”的不愉快经历...

资讯 聚焦 活动 宣传 推广 品牌 热文 找小编合作加个人微信2871001801百度百科:宁河于雍正九年(1731年)从宝坻县分出,据《河北省县名考原》称:“蓟运河纵贯县境,时多水患,故县以宁河名”!当然还有另外别的解释!民国三年(1914年)属直隶省津海道,民国十七年(1928年…

gitlab10.x迁移_1.x到2.x的迁移:可观察与可观察:RxJava FAQ

gitlab10.x迁移标题不是错误。 rx.Observable 1.x的io.reactivex.Observable与2.x的io.reactivex.Observable完全不同。 盲目升级rx依赖关系并重命名项目中的所有导入将进行编译(稍作更改),但不能保证相同的行为。 在项目的早期, …

ubuntu安装与配置mysql_ubuntu下mysql的安装与配置

安装MySQL sudo apt-get install mysql-server 这个应该很简单了,而且我觉得大家在安装方面也没什么太大题目,所以也就未几说了,下面我们来讲讲配置。 配置MySQL 留意,在Ubuntu下MySQL缺省是只安装MySQLsudo apt-get install mysq…

Servlet 处理多种请求应用

一个 Servlet 如何处理多种请求? 1.使用后缀匹配模式 2.在 service 方法中获取请求资源路径,分析资源路径来决定作何处理 示例代码如下: package priv.lwx.javaex.web_demo_02.web.servlet;import javax.servlet.http.HttpServlet; import javax.serv…

小程序搜索框_微信小程序搜索及优化相关知识科普

生活中我们常常会用到微信小程序,但很多人不知道该如何搜索、找到小程序;而有些已经做了自己的小程序的商家,也不懂怎么提升自己的微信小程序搜索效果。所以下面就跟大家科普下这两个问题。1.怎么搜索微信小程序打开微信,点击右上…

java 函数式编程 示例_功能Java示例 第1部分–从命令式到声明式

java 函数式编程 示例功能编程(FP)的目的是避免重新分配变量,避免可变的数据结构,避免状态并全程支持函数。 如果将功能性技术应用于日常Java代码,我们可以从FP中学到什么? 在这个名为“ Functional Java …

su联合推拉插件_[实习小记一一SU建模]

鉴于本菜鸡在实习阶段一直在SU建模,那就讲讲我在SU建模的心路历程吧。本菜鸡之前还是SU小白时(俗称白斩鸡,并且现在也很白),只会死命地用推拉。来到公司初探SU,第一个高层建筑便花费我半个月的时间(我突然想起有一篇日记特别好笑我是个SU人&a…

Linux 命令之 tar 命令-打包和备份的归档工具(附压缩/解压工具)

文章目录一、命令介绍二、命令语法三、常用选项四、命令示例(一)对指定的目录进行打包(即备份归档),不压缩(二)对指定目录下的内容(不含目录本身)进行打包(即…

纹理和基元_通过粘性仙人掌基元进行延迟加载和缓存

纹理和基元您显然知道什么是延迟加载 ,对吗? 而且您无疑知道缓存 。 据我所知,Java中没有一种优雅的方法来实现它们中的任何一个。 这是我在Cactoos原语的帮助下为自己找到的。 Matteo Garrone的《 Reality》(2012年)…

oracle 造数据脚本_Oracle数据库shell脚本--统计所有数据库用户信息及明细

概述今天主要分享一下两个shell脚本,主要是为了查看所有数据库用户及其表空间,统计某个指定用户的明细,下面一起来看看吧~数据库连接脚本use script settdb.sh for DB login details registry#!/bin/bashtmp_username$SH_USERNAMEtmp_passwor…

学维修电脑要多久_学厨师要多久才出师

学厨师一般要学多久?以苏州新东方学厨师为例:厨师培训可以分为长期、短期。中餐、西餐、西点长期专业学习时间1-3年不等;短期专业从7天到8个月不等,主要是按学习内容来划分,比如学苏式汤面,只需要半个月左右…

Linux 命令之 rpm -- RPM 软件包的管理工具

文章目录一、命令介绍二、语法结构三、常用选项用于查询和检查包用于安装、升级和删除包用于执行其他功能四、命令示例(一)查询和检查包1. 查看一个已安装包的信息(版本、用途等)2. 查看与指定程序相关的所有安装文件3. 查看一个已…

react核心虚拟dom_使用虚拟时间测试基于时间的React堆核心流

react核心虚拟domReactor Core实现了Reactive Streams规范,并处理了(可能无限的)数据流。 如果您感兴趣,请查看它提供的出色文档 。 在这里,我假设对Reactor Core库的Flux和Mono类型有一些基本的了解,并且将…

图书管理系统python语言-Python简易版图书管理系统

本文实例为大家分享了python图书管理系统的具体代码,供大家参考,具体内容如下 """ 图书管理系统 """ import random # books{书名:剩余数量, 书名:剩余数量} import time books {"防脱发指南": 5, "颈椎康…