axios添加了header头信息后发送的get请求自动变成option请求了,为什么???

发布于 2022-09-05 02:29:52 字数 576 浏览 14 评论 0

axios添加了header信息后发送的get请求自动编程option请求了,为什么???
原来是

axios.get(`http://***/api/v1/public/homepage`, {params: params})

加上header后

axios.get(`http://***/api/v1/public/homepage`, {params: params,headers:{"sn":"201021622343"}})

但是请求从get变成了options
之前:
图片描述

之后:
图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

梦初启 2022-09-12 02:29:52

options叫通讯员
通讯员跑到对方问可不可以派人来送信息了,回答不行,就中断!
回答可以,就排post兵前来送货!

不废话了:http://www.ruanyifeng.com/blo...

我记得sf前几天还推送过,你肯定没注意看

笑叹一世浮沉 2022-09-12 02:29:52

如果你是跨域请求,服务端返回响应时需要添加headers: Access-Control-Allow-Origin: *

express:


    // Website you wish to allow to connect
    res.setHeader('Access-Control-Allow-Origin', '*');
    // Request methods you wish to allow
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
    // Request headers you wish to allow
    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
    // Set to true if you need the website to include cookies in the requests sent
    // to the API (e.g. in case you use sessions)
    res.setHeader('Access-Control-Allow-Credentials', true);
祁梦 2022-09-12 02:29:52

这应当是跨域问题。浏览器自动在跨域的 GET 请求发送之前发送一个 OPTIONS 请求,以判断服务端是否允许这一域访问。可查看 axios 的 CORS 相关文档。

雾里花 2022-09-12 02:29:52

options 是去问是否支持 sn 这个 header,因此服务器端除了要跨域头之外还要允许的 header 头吧

半岛未凉 2022-09-12 02:29:52

clipboard.png
以上是axios官网的原话

你可以用URLSearchParams来处理请求参数

var params = new URLSearchParams();
params.append('param1', 'value1');
params.append('param2', 'value2');
axios.post('/foo', params);

但是这玩意兼容性超级超级差。

或者用qs这个库来解决

var qs = require('qs');
axios.post('/foo', qs.stringify({ 'bar': 123 }));

于是乎最终就用qs这个库了

一影成城 2022-09-12 02:29:52

您好,我也遇到了这个问题,请问您是怎么解决的呢

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文