【发布时间】:2017-07-07 18:03:20
【问题描述】:
我正在尝试使用原版 Fetch API 发出 cors PUT 请求
当我单击按钮发送 PUT 请求时,第一个请求的方法是OPTIONS。只有当我再次单击按钮时,请求上的方法才会更改为PUT。为什么?
我知道这是 CORS 预检的一部分,但有没有办法手动触发预检以便缓存 OPTIONS 响应?
这种行为是否表明某处的承诺失败?
【问题讨论】:
-
你读过规范吗?
-
是的,我已经阅读了规范。我想知道这是如何处理的——我是否需要检查已经发送的请求以查看它是否是 OPTIONS 请求然后再次发送?
-
规范不清楚吗?
-
不,不是。预检提取是手动进行还是自动进行?
-
您能否将您在 Question 中尝试的
javascript包括在内?如果根据可以收集的信息,预检请求是自动发生的,您可以手动执行请求。fetch("url", {method:"OPTIONS"}) .then(response => response.headers) .then(_headers => Array.from(_headers.entries(), h => console.log(h))).catch(err => console.error(err)),否则,从阅读规范,会发生网络错误。如果根据您的解释,规范不清楚,建议搜索类似问题,或在github.com/whatwg/fetch/issues 提交问题
标签: javascript fetch-api