gpt4 book ai didi

vue.js - 通过 Axios 和有效 JWT 发布时,WordPress REST API 返回 401 Unauthorized

转载 作者:搜寻专家 更新时间:2023-10-30 22:50:06 26 4
gpt4 key购买 nike

我正在尝试使用 Axios 和 JWT 通过我的 Vue/Nuxt 应用程序将表单中的数据发布到 WordPress REST API。

我能够获取有效 token 并将其保存为 cookie,但是当我尝试将数据发布到 API 时,我收到 401 未授权错误消息 “rest_cannot_create” - 抱歉不允许您以该用户身份发帖

相关用户是 JWT 授权的用户。我已经以作者(创建和编辑他们自己的帖子)和编辑(可以创建、编辑和删除他们自己的帖子)的身份与他们一起尝试过,但两者的结果相同。

我的代码如下:

submitForm: function() {
let formData = {
type: 'kic_enquiries',
title: {
rendered: 'Enquiry from ' + this.firstname + ' ' + this.lastname + ' [' + new Date() + ']'
},
acf: {
enquiry_name: this.firstname + ' ' + this.lastname,
enquiry_email: this.emailaddress,
enquiry_phone: this.phonenumber,
enquiry_message: this.message
}
};
this.formSubmission.push(formData);

const bodyFormData = new FormData();
bodyFormData.set('username', 'username');
bodyFormData.set('password', 'password');

axios ({
method: 'post',
url: url + '/wp-json/jwt-auth/v1/token',
data: bodyFormData,
config: {
headers: { 'Content-Type': 'multipart/form-data' }
}
})
.then(res => {
this.$cookies.set("cookiename", res.data.token, "3MIN");
}).catch(function(error) {
console.error( 'Error', error );
}).finally(() => {
console.log('Posting form...');

axios ({
method: 'post',
url: url + '/wp-json/wp/v2/kic-enquiries',
data: JSON.stringify(this.formSubmission),
config: {
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization:': 'Bearer ' + this.$cookies.get("cookiename")
}
}
})
.then(submitResponse => {
console.log('Form submitted...' + submitResponse)
return submitResponse;
}).catch(function(error) {
console.error( 'Error', error );
});
});

我需要使用拦截器吗?我在网上看到了很多关于它们的信息,但找不到任何内容来说明我需要如何根据我的情况使用它们。

更新

进一步调查表明,当通过 Postman 使用与应用程序相同的设置和数据发送时, token 可以正常工作,因此这似乎是代码问题。

发布失败是因为我错误地发送了 token 吗?

更新 2 - 2019 年 2 月 15 日

我修改了我的代码以使用 await/async 和一个观察器来检查要生成的 token ,但我仍然收到 401 错误。更新后的代码如下:

<script>
import axios from 'axios'

export default {
data: function() {
return {
firstname: null,
lastname: null,
emailaddress: null,
phonenumber: null,
message: null,
formSubmission: [],
res: [],
authStatus: false,
token: null
}
},
methods: {
submitForm: async function() {
let formData = {
type: 'kic_enquiries',
title: {
rendered: 'Enquiry from ' + this.firstname + ' ' + this.lastname + ' [' + new Date() + ']'
},
acf: {
enquiry_name: this.firstname + ' ' + this.lastname,
enquiry_email: this.emailaddress,
enquiry_phone: this.phonenumber,
enquiry_message: this.message
},
status: 'draft'
};
this.formSubmission.push(formData);
console.log(JSON.stringify(this.formSubmission));

await this.getToken();
},
getToken: function() {
console.info('Getting token...');

const bodyFormData = new FormData();
bodyFormData.set('username', 'user');
bodyFormData.set('password', 'pass');

axios ({
method: 'post',
url: link,
data: bodyFormData,
config: {
withCredentials: true,
headers: { 'Content-Type': 'multipart/form-data' },
}
})
.then(res => {
this.$cookies.set("XSRF-TOKEN", res.data.token, "30MIN");
console.log('Cookie:' + this.$cookies.get("XSRF-TOKEN"));
}).catch(function(error) {
console.error( 'Error', error );
}).finally(() => {
this.authStatus = true;
this.token = this.$cookies.get("XSRF-TOKEN");
});
}
},
watch: {
authStatus: function() {
if (this.authStatus == true) {
console.info('Posting form...');

axios ({
method: 'post',
url: 'link,
data: this.formSubmission,
config: {
withCredentials: true,
headers: {
'Authorization:': 'Bearer ' + this.token
}
}
})
.then(submitResponse => {
console.log('Form submitted...' + submitResponse)
return submitResponse;
}).catch(function(error) {
console.error( 'Error', error );
});
}
else {
console.error('Token not generated')
}
}
}
}
</script>

所以现在,表单提交必须等待生成并应用 token ,然后才能尝试向 API 发出请求。

在错误文档中,我注意到 withCredentials 被设置为 false,即使它在配置中被设置为 true。为什么会这样?

最佳答案

试试这个

let headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + 'Authorization:': 'Bearer ' + this.token
}
this.axios.post('link', JSON.stringify(this.formSubmission), {headers: headers})

关注这个link

关于vue.js - 通过 Axios 和有效 JWT 发布时,WordPress REST API 返回 401 Unauthorized,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54341379/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com