我有一个带有WireMock存根的AngularJS应用程序。有一个按钮使用以下代码调用/ api / deleteThis方法:
onDeleteButtonClick() {
this._deleteThis()
.then(() => {
this._setState(States.SUCCESS);
})
.catch(() => {
this._setState(States.FAIL);
});
}
和
private _deleteThis() {
return this.$http.delete('http://localhost:8080/api/deleteThis');
}
我的WireMock文件:
{
"request" : {
"urlPattern" : "/api/deleteThis",
"method" : "DELETE"
},
"response" : {
"status" : 200,
"body" : "{}",
"headers" : {
"Content-Type": "application/json",
"Access-Control-Allow-Origin" : "*",
"Access-Control-Allow-Methods" : "*",
"Access-Control-Allow-Headers": "Content-Type"
}
}
}
和
{
"request" : {
"urlPattern" : "/api/deleteThis",
"method" : "OPTIONS"
},
"response": {
"status": 200,
"headers": {
"Access-Control-Allow-Origin" : "*",
"Access-Control-Allow-Methods" : "POST, GET, OPTIONS, DELETE, PUT, PATCH",
"Access-Control-Allow-Headers": "Content-Type"
}
}
}
我期望的是:该功能激活时,它应该调用Mock并收到200。因此,各国应转到SUCCES。但是相反,状态设置为失败。浏览器(firefox)的“网络”选项卡显示已进行200个呼叫,但这是一个选项而不是“删除”。
我已经阅读了很多与CORS相关的类似问题。我知道为什么要进行OPTION调用,但是我不明白为什么该方法选择在收到200(即使它是另一种类型)时选择进入onRejected。
提前感谢您的时间。
答案 0 :(得分:0)
要获取更多信息,请记录错误响应:
onDeleteButtonClick() {
this._deleteThis()
.then(() => {
this._setState(States.SUCCESS);
})
.catch((error) => {
console.log(error);
this._setState(States.FAIL);
});
}