vue怎么让接口带上cookie_【VUE + SPA】接口跨域, 携带cookie 的解决方案

背景

由于历史原因,一个站点需要做成完全的SPA应用是非常困难的, 但我们可以在一些比较独立的业务中使用SPA, 每个SPA应用相互独立. 这样在用webpack打包的时候其实是会加快效率,同时不同的业务的依赖也可以不一样, 方便以后维护.

思考

当我在使用 vue + webpack 开发单页面的时候,主机host是 localhost, 端口是 8080(可自行更改). 但我的本地开发站点 在其它的linux 主机上, 而且使用 nginx 进行了代理.

站点里面已经存在了其它业务, 如果我在自己机器上开发,那么如何去调用访问这个站点的接口呢?

代理转发

如果你使用的是 vue-cli 进行初始化项目, 比如:

vue init webpack new-project

那么在config/index.js 下可以修改 dev.proxyTable

proxyTable: {

'/api': {

target: 'http://api.example.com',

changeOrigin: true,

onProxyReq (proxyReq, req, res) {

}

}

}

源地址

转发地址

localhost:8080/api

api.example.com/api

localhost:8080/api/notifications

api.example.com/api/notifications

如果我们要去掉 api.example.com的api路径?

设置 pathRewrite

proxyTable: {

'/api': {

target: 'http://api.example.com',

changeOrigin: true,

pathRewrite: '^/api' : '',

onProxyReq (proxyReq, req, res) {

}

}

}

源地址

转发地址

localhost:8080/api

api.example.com

localhost:8080/api/notifications

api.example.com/notifications

代理的好处:

解决开发时跨域问题

代理的问题:

代码需要设置环境变量,prod环境下不存在 http-proxy-middleware 中间件

携带Cookie

如果我想拥有 www.example.com 或 *.example.com 下的 cookie 进行模拟请求.

本地host

线下域名

localhost:8080

www.example.com

可以利用 nginx + host 进行转发配置

本地配置 host

127.0.0.1 www.example.com

配置 linux 机器的 nginx.conf

http: {

server: {

listen 80;

server_name www.example.com;

location / {

}

location /project_name { # 指定发布时的路径, 如 /profile

proxy_pass http://xxx.xxx.xxx.xxx:8080; # 你的主机IP

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

}

}

只要你访问 www.example.com/profile 就能访问到 你正在开发的SPA 应用了

虽然这样能够解决问题,不过这样就会带来 nginx 的配置, 然而这在上线的时候又不是必备的.

虽然我用过 fiddler4, 但我发现了一个更简单的配置工具,叫做 whistle. 具体使用可以在github官网去搜索学习.

whistle 是由nodejs开发的工具,他能做的东西有很多,可以查看报文,注入代码。自带了weinre 调试工具, 再配合whistle 的 chrome 插件. 就可以很快的进行配置host, 以及基本的代理了.

安装 whistle

npm install -g whistle

whistle.cmd

他会启动一个端口,访问站点。然后配置 rules

aa346a269a37872638729a813277df71.png

我们就可以通过访问 www.example.com/profile 进行访问我们的单页面应用了, 这样请求就能携带我们www.example.com 下面的cookie了

小结

以上是个人的开发经验, 如果你有更好的解决方案。欢迎提出来一起讨论一下!!

相关项目及地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值