【问题标题】:Not able to send a DELETE request with fetch api无法使用 fetch api 发送删除请求
【发布时间】:2016-06-03 14:36:39
【问题描述】:

当我向某个端点发送删除请求时,例如来自终端的httpie,例如

http delete http://localhost:8181/admin/applications/uspecs

我得到了一个有效的行为,如 { success: true } 作为响应正文。 但是当我这样做时

fetch (
  'http://localhost:8181/admin/applications/uspecs',
  { method: 'DELETE' }
)
.then(res => doSomethingWithResponse())
.catch(err => console.error(err))

在javascript代码中,然后我得到一个

Fetch API cannot load http://localhost:8181/admin/applications/uspecs.
Method DELETE is not allowed by Access-Control-Allow-Methods in preflight response.

控制台出错。我错过了什么?我在选项请求中获得了一个有效的方法列表。

【问题讨论】:

  • 了解跨域资源共享 (CORS) - stackoverflow.com/questions/25845203/understanding-cors
  • 在 OPTIONS 响应中,我收到了 allow: DELETE, HEAD, GET, OPTIONS, POST 列表。应该这样做,不是吗? @OndrejSvejdar
  • 您能否使用 fiddler composer 向端点发送 OPTIONS 请求并发布您得到的响应。该帖子也令人困惑-确保将 OPTIONS 和 DELETE 请求发送到同一端点(在您的帖子中它们是不同的)。
  • 已更新。 @OndrejSvejdar
  • 我在您的帖子中没有看到任何 OPTIONS 回复。请将该请求的完整响应标头发布。

标签: javascript fetch-api


【解决方案1】:

您需要发送包含允许方法的Access-Control-Allow-Methods 标头。目前您的标头名为methods

【讨论】:

  • 就是这样!谢谢!
  • 我应该如何添加该标题?
  • 这取决于您的服务器端框架。检查它的文档。
猜你喜欢
  • 1970-01-01
  • 2020-11-24
  • 1970-01-01
  • 2017-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多