飞行前 OPTIONS 请求延迟了我的 DELETE
Posted
技术标签:
【中文标题】飞行前 OPTIONS 请求延迟了我的 DELETE【英文标题】:Pre-flight OPTIONS request delays my DELETE 【发布时间】:2018-06-18 00:24:29 【问题描述】:问题太牵涉到SO,请忽略。
和你一样。
【问题讨论】:
您的问题不是因为 OPTIONS 预检,而是因为您不了解异步性 - 但没有一点代码,这只是一种直觉 在第一个请求完成之前不要发出第二个请求。如果您连续调用它们,则无法保证完成顺序甚至到达服务器的顺序 @JaromandaX 请参阅编辑。我理解 async 很好,并意识到我不应该依赖请求排序;但是,我看不出数据存储如何通过这种异步活动保持完整性。 嗯,问题不在于预检。您没有清楚显示的代码并不能保证请求的顺序 - 但是由于您没有显示任何代码,它仍然只是一种直觉 @JaromandaX 举个例子吧 【参考方案1】:更改您的导航呼叫以等待fetch
承诺解决。从本地商店删除可能应该做同样的事情,但这不是手头的问题
// AJAX to delete from server
fetch(
url: '/thing/' + this.props.id,
method: 'delete'
).then(_=> this.props.navigate('/things/'));
【讨论】:
这是唯一的方法。不能保证DELETE
会在GET
之前到达服务器。
问题是获取不会直接发生在组件中;该组件调用一个动作创建者,它在调度reducer用来删除对象的动作的同时异步触发获取...
我有很多reducer;一个负责处理所有 API 调用,另一个存储这种类型的数据。当单击“删除”按钮时,它们都对组件触发的action.type
“做”一些事情。
此外,如果获取发生在组件外部,那么您的示例需要反映这一点。帮助我们帮助您。
@charlietfl 是的,它是一种被称为“乐观更新”的模式。以上是关于飞行前 OPTIONS 请求延迟了我的 DELETE的主要内容,如果未能解决你的问题,请参考以下文章
Tomcat Jersey 在“OPTIONS”飞行前请求中阻止服务器
在 IdentityServer3 中处理 CORS 之前发送的飞行前 OPTIONS 请求
如何在浏览器的控制台中查看 CORS 飞行前 OPTIONS 请求?
Angular $http 未在 OPTIONS 飞行前发送标头