vue开发环境配置跨域proxy,vue proxy解决跨域

  vue开发环境配置跨域proxy,vue proxy解决跨域

  本文主要介绍了如何通过配置vue服务器的proxyTable来解决跨域问题,有很好的参考价值,希望对大家有所帮助。如有错误或不足之处,请不吝赐教。

  

目录

  服务器proxyTable配置方案跨域1、代理功能2、常见情况3、应用模式4、具体配置示例5、配置思路Vue.proxyTable是什么?proxyTable为什么存在?配置代理表

  

服务器代理proxyTable配置解决跨域

  

1、Proxy代理作用

  代理功能:前端服务器代理的功能是告诉服务器任何未知的请求(没有与静态文件匹配的请求)并代理到另一个地址,从而解决跨域问题。

  

2、常见情况

  前端向后端请求资源时,如果后端不使用Cros中间件,就会出现跨域问题。解决问题的方法之一是前端使用代理来代理服务器。

  

3、应用方式

  当使用vue-cli2创建vue项目时,在config文件夹下的index.js文件中,可以在dev的相关配置信息中的proxyTable中代理一个或多个服务器。

  注意:

  ProxyTable是vue-cli提供的解决vue开发环境中跨域的方法。proxyTable的底层使用的是http-proxy-middleware,也就是http代理中间件,它依赖于node.js,基本原理是使用服务器代理来解决跨域浏览器跨域。

  有时候开发的时候我们要求的后代的接口和vue不在同一个域名,导致跨域,但是后端服务器不开cors。这时候就需要配置proxyTable来解决跨域问题。

  

4、具体配置实例

  代理表:{

  //api 等于target,在链接中访问/api等于http:/182.xx.xx: 8888/

  /api:{

  Target: 3358182.xx.xx: 8888/,//服务器的接口地址

  secure:true,///如果是https的话,需要开启这个选项。

  Change origin: true,//是跨域请求吗?图雷

  路径重写:{

  /^api:api/

  //如果真实接口包含/api,需要这样配置。

  //相当于/API=/API API==http://182 . xx . xx:8888/API

  }

  }

  }

  

5、配置思路

  当网络请求的完整路径为/api/ynai/static/ai/时,会出现跨域问题,这时网络请求就需要前端服务器代理。

  具体配置如下:

  首先,代理标记名必须与请求路径中的标题一致。示例代码如下:代理表:{/API: {}}

  配置目标参数,确定请求代理的服务器根路径。代码示例如下:

  根据需要确定ws(websocket代理)的布尔值。

  配置changeOrigin,赋值给ture,允许跨域。

  根据需要配置pathRewrite参数。

  如果最终代理之后的路径中不需要/api,则需要配置pathRewrite的参数,以将路径重写为“”

  代理原理:

  假设代理配置如下:

  则:

  1.当网络请求发生时,代理配置文件将定期匹配网络请求路径,无论它是否匹配代理(例如,如果请求是/aaa/static/ai/并且代理配置有/aaa ,则匹配成功)

  2.匹配成功后,代理配置生效,他会请求/aaa/static/ai/,按照代理配置指定的方式处理,最后拼接到target指向的服务器根路径(http://www.baidu.com/)。

  3.最终形成完整的请求路径(http://http://www . Baidu . com/static/ai/ai),解决了跨域问题。

  小结:前端服务器代理配置依赖于保证代理配置文件能够匹配axious请求的url,使得target指向的服务器地址能够与url正确拼接,获得完整的跨域请求路径,进而请求远程资源。

  

Vue.proxyTable是什么?

  在vue项目的config文件夹下的索引文件中有一个proxyTable节点。

  ProxyTable是vue-cli scaffold在开发模式下提供的跨域代理服务器服务。它基于http-代理-中间件插件。

  

为什么会有proxyTable存在?

  我开发毕业设计的时候:一个基于vue springboot的手机交易网站。因为我用前端分离,前端用节点服务器,后端用tomcat服务器。所以涉及到跨域,是因为端口不一样。

  正常情况下,不能通过ajax从后台请求数据。由于跨域、浏览器的同源策略,该数据返回被拦截。

  解决方法:

  1.服务器启动cors。

  2.使用代理服务器进行传输(vue请求自己的后台,让后台请求需要数据的后台,然后将数据返回给vue。

  如果不能从后台设置cors进行跨域支持。那么我们只能通过配置proxyTable来跨域。

  

配置proxyTable

  proxyTable跨域的基本原理:

  在开发模式下,webpack将为我们提供一个http代理服务器。当我们请求接口时,它实际上是由请求的webpack提供的这个http代理服务器。该代理服务器请求真正的数据服务器。最后,数据通过webpack代理服务器。最后转到vue程序。

  为什么加个代理服务器就可以了?

  因为代理服务器不是浏览器,所以没有相应的策略限制。

  代理表:{

  //在这里配置“/api”相当于target。你访问/API中的链接==http://localhost: 54321

  /api: {

  目标: 3358localhost: 54321/,//真的是服务器的接口地址//3358 localhost:54321/JSON . data . JSON,

  Secure: true,//如果是https,这个选项需要打开。

  ChangeOrigin: true,//是跨域请求吗?当然,如果没有跨域,就不需要配置这个proxyTable。

  路径路径:{

  //这里有一个附加链接。比如接口中包含/api,就需要这样配置。

  /^api: api/,

  //相当于

  //第一步/api=http://localhost:54321/

  //第二步/^api=/API API==http://localhost:54321/API

  }

  }

  },

  总结。

  1.proxyTable是webpack在开发环境中提供的代理服务器。

  2.目的是在开发阶段,服务器不方便开通跨域功能时,发送ajax跨域请求。

  3.让cors在真实发布环境下后台打开就行了。

  以上个人经历,希望能给大家一个参考,也希望大家多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: