当前位置: 首页 > 知识库问答 >
问题:

javascript - vuessr如何使用axios携带用户信息请求API?

阳凌
2023-10-24

前端框架:vuessr(使用的是官方demo:vue-hackernews)
在官方基础上,只额外在@/api/index.js 增加axios请求后端的api数据。
流量走向:

    ①用户访问域名->    ②域名反向代理至127.0.0.1:8080(ssr项目)->    ③ssr再通过axios请求api数据

ssr和api都在同一台服务器上,反向代理配置如下

    location / {      proxy_pass http://127.0.0.1:8080;      proxy_set_header Host $host:$server_port;      proxy_set_header X-Real-IP $remote_addr;      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;      proxy_set_header REMOTE-HOST $remote_addr;      add_header X-Cache $upstream_cache_status;      proxy_set_header X-Host $host:$server_port;      proxy_set_header X-Scheme $scheme;      proxy_connect_timeout 30s;      proxy_read_timeout 86400s;      proxy_send_timeout 30s;      proxy_http_version 1.1;      proxy_set_header Upgrade $http_upgrade;      proxy_set_header Connection "upgrade";    }

用户访问域名的日志是正确的

    用户IP - - [23/Oct/2023:01:11:11 +0800] "GET http://域名 HTTP/1.1" 200 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36"

axios访问api的日志是

    服务器IP - - [23/Oct/2023:01:11:11 +0800] "GET /api/xxxx HTTP/1.1" 200 1210 "-" "axios/0.21.4"

我也尝试过使用http-proxy-middleware转发代理,但实际上是直接镜像转发的地址。
我已经开始懵圈,ssr项目分客户端入口和服务器端入口,不知道通过何种手段才能让api获取到客户端的真实信息。
可以在nginx层面、代码层面、axios替换相同工具都可以。如果有大牛做过相同的项目,请私聊告知我,红包先行奉上,解决后红包拉满或您说价位,我会把解决方法公布出来。鹅:11959319。其他没做过ssr项目的朋友用常规的方法是没有办法的

共有1个答案

楚昊明
2023-10-24

"axios/0.21.4" 这里看上去就是因为没有传导致用了系统默认的。

那么解决方法就是 axios 拦截器里面读一下 req 的来源覆盖进去就好了

 类似资料:
  • vue项目中嵌了一个iframe,iframe中需要登录,login请求必须携带cookie,请问应该怎么写才能正确携带呢 想要iframe中的login请求能正确携带cookie

  • 似乎有很多不同的方法可以做到这一点,但我试图只使用sinon,sinon-test,chai/mocha,axios,httpmock模块。我无法成功模拟使用axios进行的GET调用。我希望能够模拟来自axios调用的响应,这样单元测试实际上就不必发出外部API请求。 我尝试过通过创建沙箱来建立一个基本的单元测试,并使用sinon stub来建立一个GET调用并指定预期的响应。我不熟悉JavaS

  • TP5已经将请求封装为\think\Request,所有的请求信息可以通过请求对象获取; 获取请求对象 请求对象的获取有两种方式: 1.在控制器方法内可以直接通过 request 属性获取: $request = $this->request; 2.在其它地方可以Request的单例方法 $request = Request::instance(); 3.使用助手函数 $request = r

  • TP6.0已经将请求封装为\think\Request,所有的请求信息可以通过请求对象获取; 获取请求对象 请求对象的获取有两种方式: 1.在控制器方法内可以直接通过 request 属性获取: $request = $this->request; 2.在其它地方可以用request()的助手函数 $request = request(); 获取请求信息 // 获取当前控制器 $request

  • 请求信息 Request对象支持获取当前的请求信息,包括: 方法 含义 host 当前访问域名或者IP scheme 当前访问协议 port 当前访问的端口 remotePort 当前请求的REMOTE_PORT protocol 当前请求的SERVER_PROTOCOL contentType 当前请求的CONTENT_TYPE domain 当前包含协议的域名 subDomain 当前访问的子