axios 会给 /api/前加当前服务域名吗?

前端项目:
.env配置

# API
VUE_APP_BASE_API = '/prod-api'

前端不做代理,由nginx来做代理。
浏览器看到的请求地址如下:
http://localhost:9000/prod-api/**

请问:前面的“http://localhost:9000”是前端代码加的吗?axios加的?还是nginx加的?

阅读 3.1k
4 个回答

感谢各位的帮助,给了我很多支持。
这个问题最终看了axios的源码包。
axios对于http://域名+端口+接口串正常解析,对于/api/+接口串,善良的axios会帮助我加上前面的http://域名+端口,增加内容为当前服务的域名+端口。

# API
VUE_APP_BASE_API = '/prod-api'

所以:针对配置如上的情况,http请求有善良的axios给我加http://域名+端口。但是websocket却不会做多余的事情。

所以善良的axios迷惑了我,让我对nginx配置的无法放下,掉进了错误的坑里。

axios源码处:
axios/lib/helpers/isURLSameOrigin.js

axios加的,毕竟一个资源连接是由协议+域名/地址+端口+路径组成的.
你是想让前端请求你的nginx服务器?
那你就在配置axios的时候,加上baseurl这个配置项
这时候axios就会给你加上你期望的nginx地址了
不然,就是地址栏上的协议+域名/地址+端口

浏览器加的。如果有配置另一个地址做代理,直接写完整的代理地址VUE_APP_BASE_API = http://www.xxxx.com/prod-api

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题