前后端分离如果涉及到Cookie还是免不了服务代理

Proxy代理配置

vite.config.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
export default defineConfig({
plugins: [vue()],
resolve: {
// dedupe:['vue'],
alias: {
'@': '/src',
},
},
server: {
host: '0.0.0.0',
open: false,
proxy: {
'/api': {
target: 'http://127.0.0.1:8000/',
changeOrigin: true, // 允许跨域
rewrite: path => path.replace('/api/', '/'),//将 /api 替换为空字符串
// 相当于pathRewrite: { '^/api/': '/' },
secure: false,//禁用 HTTPS 安全性检查
cookieDomainRewrite: '',//设置为空字符串可以确保代理请求中的 Cookie 在跨域时正确处理
},
},
},
})

同时在我们之前创建的封装了axios的js文件

1
2
3
4
5
6
7
8
9
import axios from "axios";  //要导入安装的包,则直接填写包名即可
// axios.defaults.withCredentials=true;//允许携带cookie跨域
//创建实例
const httptool = axios.create({
// baseURL: 'http://127.0.0.1:8000/',
baseURL: '/api',//请求的公共路径,一般填写服务器api地址
timeout: 1000, //最大请求超时时间,请求超过这个时间就报错
headers: {'X-Custom-Header': 'foobar'} //预设的请求头,一般工作当中这里填写隐藏了客户端身份字段
});

baseURL修改成下面的,是我们每次通过axios请求的url额外添加/api,以避免和正常的前端路由混淆
然后一般的请求url就不必向之前写的那么长,当然,单独设置baseURL也是能够做得到

1
2
3
4
5
6
7
 httptool.post('/authorizations/', {
username: this.username,
password: this.password
}, {
responseType: 'json',
// withCredentials: true // 跨域情况可以携带cookie
})

也不必写
withCredentials: true


本破站由 @BXZDYG 使用 Stellar 主题创建。
本博客部分素材来源于网络,如有侵权请联系1476341845@qq.com删除
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

本"页面"访问 次 | 👀总访问 次 | 总访客
全部都是博主用心学编写的啊!不是ai啊 只要保留原作者姓名并在基于原作创作的新作品适用同类型的许可协议,即可基于非商业目的对原作重新编排、改编或者再创作。