配置代理——解决跨域问题(详解)

这篇具有很好参考价值的文章主要介绍了配置代理——解决跨域问题(详解)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

之前写项目的时候总会遇到配置代理的问题,可是配置了之后有时有用,有时就没有用,自己之前学的也是懵懵懂懂,于是专门花了一个小时去了解了如何配置代理跨域,然后在此记录一下,方便自己以后查阅。

一、 常用发送 ajax 请求的方式

1、通过原生的 xhr(XMLHttpRequest) 发起 ajax 请求 ——比较麻烦,真正开发中不常用

2、通过 jQuery 发起 ajax 请求 ——内部封装了XHR,但是主要操作DOM,不推荐使用

3、通过 axios 发起 ajax 请求——内部也封装了XHR,并且体积小,官方推荐使用

4、通过 fetch 发起请求——包裹两层 Promise,并且在IE浏览器中兼容性比较差,较少使用

由于官方推荐使用 axios,并且体积小,支持请求拦截器和响应拦截器,所以本篇文章主要通过  axios来进行讲解,如何配置代理,解决跨域问题。

二、跨域问题的产生

当出现以下报错,看到 CORS'Access-Control-Allow-Origin' 这两个关键信息的时候,就说明出现跨域问题了

配置代理——解决跨域问题(详解),一些重要笔记,js,安全,前端,js,proxy模式

(一)产生问题

所谓跨域就是违背了同源策略,同源策略是一个著名的安全策略,规定了协议名,主机名,端口号这三个要一致。下面用图来详细讲解一下刚刚的流程

配置代理——解决跨域问题(详解),一些重要笔记,js,安全,前端,js,proxy模式

 这是刚刚发请求的过程,根据上图可以看出来,请求已经发出去了,浏览器也已经把数据返回回来了,可是为什么我们拿不到呢,这是因为浏览器发现你跨域了,所以它将数据握在了自己手里,没有给我们。

(二)注意事项

这里有很多人以为产生跨域的时候,连请求都没有发出去,这样理解是错误的,请求已经发出去了,服务器也把数据返回回去了,只不过浏览器没有给我们罢了,这个一定要记住!

三、如何解决跨域

1、CORS 解决跨域

cors 解决跨域,不需要前端做任何事情,只需要后端返回数据的时候加特殊的响应头即可。这里就不对 CORS 进行详细的讲解了,如果有感兴趣的同学可以去看我这篇文章,里面详细讲解了CORS的实现:CORS如何实现跨域

2、jsonp 解决跨域

JSONP 解决跨域,就是利用 <script> 标签的 src 属性可以加载跨域的 JavaScript 脚本这一特性实现的。与普通的 Ajax 请求不同,在使用 JSONP 进行跨域请求时,服务器不再返回 JSON 格式的数据,而是返回一段调用某个函数的 JavaScript 代码,在 src 属性中调用,来实现跨域。这里我也不多赘述,如果有感兴趣的同学可以看我这篇文章,里面详细讲解了 jsonp 的实现:jsonp 详解

3、代理服务器解决跨域(本节重点)

代理服务器解决跨域问题,代理服务器与浏览器同源,不存在跨域问题,代理服务器与服务器非同源,但是服务器与服务器之间采用 http 请求,不存在跨域问题,所以这样就非常巧妙的解决了跨域的问题。下面我用图来帮助大家理解一下这段话

配置代理——解决跨域问题(详解),一些重要笔记,js,安全,前端,js,proxy模式

 

四、具体实现代码

(一)如何开启代理服务器

1、nginx:需要熟练后端,学习成本大,这里不使用

2、vue-cli:利用脚手架,代码简单,方便上手,这里主要讲解这个

(二)代码实现(proxy)

1、配置单个代理

配置代理——解决跨域问题(详解),一些重要笔记,js,安全,前端,js,proxy模式

 

// vue.config.js 文件中设置

module.exports={
     devServer:{
         proxy:'http://localhost:5000' 
     } 
}

优点:配置简单

缺点:1、不能配置多个代理

           2、不能灵活控制到底走不走代理

2、配置多个代理  

配置代理——解决跨域问题(详解),一些重要笔记,js,安全,前端,js,proxy模式

// vue.config.js 文件中设置
module.exports={
    devServer:{
        proxy:{
            '/api01':{ 
                target:'http://localhost:5000',
                // 重写请求
                pathRewrite:{
                    '^/api01':''
                }
            },
            '/api02':{
                target:'http://localhost:5001',
                // 重写请求
                pathRewrite:{
                    '^/api02':''
                }
            }
        }
    }
}

优点:可以灵活控制到底走不走代理

缺点:配置略微有点繁琐文章来源地址https://www.toymoban.com/news/detail-617307.html

写在最后,制作不易,如果对你有用,请留下一个免费的赞!

到了这里,关于配置代理——解决跨域问题(详解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于 若依框架(前后端隔离版本) 图片映射问题的解决方法 (解决跨域问题,配置代理路由)

    开发代理: 在 vue 项目内的 vue.config.js 配置文件内配置 devserver 配置,在 proxy 参数内配置两个代理路径,如 生产代理: 在 nginx 配置文件 nginx.conf 内配置 图片代理路由,类似 /proc-api/ 一样的路由 参考如下链接,去配置后端图片映射路径 1. addResourceHandler配置静态资源映射本地

    2024年02月13日
    浏览(35)
  • 10-Vue技术栈之脚手架配置代理(解决跨域问题)+ GitHub用户搜索案例

    ​ 在vue.config.js中添加如下配置: 说明: 优点:配置简单,请求资源时直接发给前端(8080)即可。 缺点:不能配置多个代理,不能灵活的控制请求是否走代理。 工作方式:若按照上述配置代理,当请求了前端不存在的资源时,那么该请求会转发给服务器 (优先匹配前端资

    2024年02月07日
    浏览(33)
  • vue项目使用vite设置proxy代理,vite.config.js配置,解决本地跨域问题

    非同源请求,也就是协议(protocol)、端口(port)、主机(host)其中一项不相同的时候,这时候就会产生跨域 vite的proxy代理和vue-cli的proxy大致相同,需要在vite.config.js文件中配置(打包配置也在此) 代理配置在server中,可以上vite官网服务器选项查看server.proxy代码示例:开发服务器选

    2024年01月21日
    浏览(50)
  • vue项目跨域问题(图片跨域)devServer.proxy代理失效时,nginx反向代理解决跨域问题

    ​ 本篇文章主要记录个人在公司项目开发中所遇问题,主要内容:在vue项目的开发中图片所存的服务器/端口号和项目所在的服务器/端口号不同,出现了跨域问题的保错。 ​ 如果文章有歧义,请各位大佬指出,避免误导更多的人!! Bug起因 ​ 在vue项目的开发中图片所存的

    2024年02月15日
    浏览(32)
  • Vite 配置代理 Proxy,Vue配置代理,解决前端跨域

    我们在做项目的时候经常会遇到跨域的问题,之所以会出现跨域问题是因为浏览器的同源策略,即协议、域名、端口需要一致,才可以访问服务端的资源。当一个请求地址(服务端的地址)的协议、域名、端口三者之间任意一个与当前页面地址(前端页面地址)不同即为跨域

    2024年02月17日
    浏览(44)
  • Nginx 代理解决跨域问题分析

    当你遇到跨域问题,不要立刻就选择复制去尝试。请详细看完这篇文章再处理 。我相信它能帮到你。 分析前准备: 前端网站地址:http://localhost:8080 服务端网址:http://localhost:59200  首先保证服务端是没有处理跨域的,其次,先用postman测试服务端接口是正常的。 当网站8080去

    2024年02月09日
    浏览(44)
  • Vite 配置代理 Proxy,解决跨域

    我们在编写前端项目的时候,经常会遇到跨域的问题,当我们访问后端 API 的 URL 路径时,只要域名、端口或访问协议(如 HTTP 和 HTTPS)有一项不同,就会被浏览器认定为跨域。另外我们也会经常重复编写后端的域名,例如  https://example.com/api/some_end_point , https://example.com/ap

    2024年02月16日
    浏览(36)
  • Vue中利用代理服务器解决跨域问题

    目录 第一章、了解跨域 第二章、解决跨域问题——代理服务器 2.1 了解原理 2.2 如何配置代理服务器 2.2.1 配置代理服务器(方法一) 2.2.2 配置代理服务器(方法二) AJAX及其相关知识应用(很详细)_❆VE❆的博客-CSDN博客 前端的8080端口需要向后端服务器3000端口请求数据,此

    2024年02月03日
    浏览(46)
  • 解决你的 Nginx 代理跨域问题详细完整版

    当你遇到跨域问题,不要立刻就选择复制去尝试。请详细看完这篇文章再处理 。我相信它能帮到你。 分析前准备: 前端网站地址:http://localhost:8080 服务端网址:http://localhost:59200  首先保证服务端是没有处理跨域的,其次,先用postman测试服务端接口是正常的 当网站8080去访

    2024年02月21日
    浏览(45)
  • umi 如何使用 proxy 代理解决 开发环境跨域 问题

    由于浏览器的同源策略限制,当一个请求 URL 的协议、域名、端口和当前页面 URL 任意一个不一致时都会出现跨域错误。 eg: 用 node run了一个 http://localhost:8080 的服务,在这个服务器下访问的网页也默认在 http://localhost:8080 这个域下面; 假设服务端所在的域是 http://example.com 这

    2024年02月09日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包