我不知道自己做错了什么,需要帮助。
function loadDoy() {
axios({
method: 'post',
headers: {
"Access-Control-Allow-Origin": "*",
'Content-Type': 'application/json',
},
url: apiPostUrl,
data: {
user: "webuser",
password: "m0nk3yb@rz",
layout: "Main Menu"
},
})
.then(function(response) {
this.token = response.data.token;
//if login token works then get records
getRecords();
})
.catch(function(xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
});
}
答案 0 :(得分:0)
您可以在axios帖子的标题处使用' crossDomain&#39 ;: true ,这是由于cors错误。您的浏览器正在生成Preflight Request,它使用OPTIONS HTTP方法。这是为了检查服务器是否允许POST请求 - 在对OPTIONS请求的响应中发送405状态代码,而不是POST请求
在这种情况下,以下情况导致请求被预检:
如果Content-Type标头的值不是以下值:
应用程序/ x-WWW窗体-urlencoded
的multipart / form-data的
纯文本/
Content-Type标头的值由axios设置为application / json; charset = utf-8。使用text / plain; charset = utf-8或text / plain修复了问题:您可以尝试使用如下所示。
来源:App Script sends 405 response when trying to send a POST request
axios({
method: 'post',
headers: {
'crossDomain': true,
//'Content-Type': 'application/json',
'Content-Type': 'text/plain;charset=utf-8',
},
url: apiPostUrl,
data: {
user: "webuser",
password: "m0nk3yb@rz",
layout: "Main Menu"
},
})
.then(function(response) {
this.token = response.data.token;
//if login token works then get records
getRecords();
})
.catch(function(xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
});