32.Webpack-Proxy

昨天遇到一个非法referer请求的问题,关键是测试环境可以,但是本地使用代理就不行。

referer:是http请求头中自动加上的一个属性,标识的是网站来源,可以利用referer规避非法请求。例如:我这个网站只允许指定域名才可以访问,使用Locahost就请求不到接口信息。

image.png

最后这个问题是一个后端问题,但是由此我在这个事情上纠结了一天,一直以为是本地请求的地址不对。

解决问题过程中一些比较疑惑的点,在此记录。

Q:axios.defaults.baseURL中设置了url地址为/之后为什么本地代理拦截不到请求呢?

A:可以请求到,请求不到说明可能是凭证没有拿到。需要在代理里面配置【目标访问地址】,【cookie】信息。

Q:如果可以使用axios.defaults.baseURL那么使用proxy又有什么用呢?

A:如果设置了axios.defaults.baseURL,如果没有按照指定的规则是匹配不到的,也就不会使用本地代理了,走的就是axios的配置。

Q:为什么有的时候需要将target设置成远程地址才可以?

A:因为本地的serverUrl配置成了测试环境的地址,如果把serverUrl改成【/】,本地代理配置下面的配置就会拦截请求地址,然后利用代理将远程地址转成本地的地址(服务端和服务端可以通信,服务端和浏览器端存在同源问题,会产生跨域问题),然后看到请求地址会是以【http://localhost:8080/xxx】开始的,但是调的接口是测试环境的接口,此时不用前端手动setCookie就可以本地启动&访问了。

"/":{
            target:"测试环境服务端地址",
            changeOrigin:true,
            //重写后者改变http请求
            pathRewrite:true,
        },

基础配置项说明:

//用于快速开发应用程序,相当于在本地起了一个服务,可以使用(域名+端口号)的方式在浏览器进行访问
devServer:{
    host:"",//指定要使用的host,使你的服务可以被外部访问
    hot:"true",//启用webpack的热模块更新,修改文件后,浏览器自动更新修改后的内容
    //解决跨域问题,单独的API后端开发服务器并且希望在同一域上发送API请求.这种代理在很多情况下是很重要的,比如你可以把一些静态文件通过本地的服务器加载,而一些API请求全部通过一个远程的服务器来完成
    proxy:{
        "/api":{
            target:"http://localhost:8080",//配置将/api的请求代理到http://localhost:8080/api
            changeOrigin:true,
            //重写后者改变http请求
            pathRewrite:true,
        },
    }
}

参考1

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Nuxt爬坑 第一节:nuxt.js相关概述 nuxt.js简单的说是Vue.js的通用框架,最常用的就是用来作S...
    阿_军阅读 1,184评论 0 0
  • 前端解决: 1.配置BaseUrl import axios from 'axios' Vue.prototype...
    雷姆是我的阅读 1,556评论 1 0
  • 心里最崇拜的那个人,不必变成那个人,而是用那个人的精神和方法,去变成你自己----本文来自拉勾大前端 Ajax A...
    安掌门dear阅读 3,611评论 0 9
  • 在vue项目中,一般的请求方式有四种 1.对本地数据请求(json 2.对模拟数据的请求(mock) 3.对第三方...
    大马虎阅读 251评论 0 1
  • vue-resourceVue.js是数据驱动的,这使得我们并不需要直接操作DOM,如果我们不需要使用jQuery...
    雪妮爸爸阅读 910评论 0 0

友情链接更多精彩内容