Javascript axios授权头仅用于get请求
我有一个简单的api端点,用于共享POSTJavascript axios授权头仅用于get请求,javascript,api,http,authorization,axios,Javascript,Api,Http,Authorization,Axios,我有一个简单的api端点,用于共享POST/api/v1/posts/{id}/share,它需要使用承载令牌进行身份验证 我尝试发送一个POST请求,如下所示,它以401响应 axios.post(`/api/v1/posts/${id}/share`, { "headers": { "Authorization":"Bearer "+token, "Content-Type": "applicat
/api/v1/posts/{id}/share
,它需要使用承载令牌进行身份验证
我尝试发送一个POST请求,如下所示,它以401响应
axios.post(`/api/v1/posts/${id}/share`,
{
"headers": {
"Authorization":"Bearer "+token,
"Content-Type": "application/x-www-form-urlencoded",
"Accept": "application/json"
},
});
只有当我将其更改为接受后端上的GET并将代码更改为此时,它才起作用
axios.get(`/api/v1/posts/${id}/share`,
{
"headers": {
"Authorization":"Bearer "+token,
"Content-Type": "application/x-www-form-urlencoded",
"Accept": "application/json"
},
});
我用http客户端测试了我的端点(失眠),所以问题似乎确实出在axios上。为什么会发生这种情况?我该如何解决
我使用的服务器是apache,后端框架是laravel,所以我使用不同的语法解决了这个问题
const options = {
method:"post",
"headers": {
"Authorization":token,
"Content-Type": 'application/x-www-form-urlencoded',
"Accept": "application/json"
},
url:`/api/v1/posts/${id}/share`
};
axios(options);
老实说,我说不出发生了什么变化,但你可以为任何看到这一点的人解释一下。这个问题的根本原因是:
axios.post
和axios.get
有不同的语法——第二个参数在axios.get
中表示“config”,但在axios.post
中表示“data”。这就是为什么它在GET中有效,但在POST中失败的原因
根据axios的说法,这两种语法是:
get(url[,config])
post(url[,数据[,配置]])
因此,当您发送带有代码的HTTP POST请求时:
axios.post(`/api/v1/posts/${id}/share`,
{
"headers": {
...
},
});
发送请求时,HTTP正文为{“header”:{…}
——未配置请求头
要使其与axios.post
一起工作,应将头文件
配置对象作为第三个参数传递。例如:
axios.post(`/api/v1/posts/${id}/share`,
{}, // or whatever data you want to send.
{
"headers": {
...
},
});