Angular http到Wiremock存根执行Option而不是Delete with 200-> Page继续到onRejected

时间:2019-06-19 13:13:19

标签: java angularjs cors wiremock

我有一个带有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。

提前感谢您的时间。

1 个答案:

答案 0 :(得分:0)

要获取更多信息,请记录错误响应:

onDeleteButtonClick() {
    this._deleteThis()
      .then(() => {
          this._setState(States.SUCCESS);
      })
      .catch((error) => {
        console.log(error);
        this._setState(States.FAIL);
      });
  }