gpt4 book ai didi

javascript - 为什么每个 Ember 数据存储事务都会向服务器发送额外的 OPTIONS 请求?

转载 作者:行者123 更新时间:2023-11-30 15:32:00 24 4
gpt4 key购买 nike

我在我的应用程序中使用 ember-data,但是,我意识到 Ember 数据将发出两个 分离的请求(例如 GETOPTIONS ) 到服务器,这当然比发出单个请求需要更长的时间。

请参见下面的屏幕截图,OPTIONS 请求需要 1 秒才能完成,每个用户操作总共需要 2 秒。

enter image description here

下面的代码片段是我用来在一个特定路径中获取模型的,

model() {
return this.store.findAll('card');
},

我的问题是为什么它会发出两个请求?这是发出 OPTIONS 请求所必需的吗?如果不是,我如何才能停止让我的 Ember 数据发出 OPTIONS 请求?

最佳答案

这被称为 preflighted request存在的主要原因是安全性,并且在 dealing with CORS 时是必需的.

浏览器会自动执行此操作以确保所完成的请求得到服务器的信任。

有两种方法可以禁用它(或至少限制它):

  1. 通过设置 Access-Control-Max-Age允许缓存预检请求结果并减少请求量的 header 。

  2. 将您的请求转换为 simple request这不会触发预检请求。

一个简单的请求是满足以下所有条件的请求:

  1. 唯一允许的方法是:

    • 获取
    • 负责人
    • 发布
  2. 唯一允许手动设置的 header 是 Fetch spec定义为 CORS-safelisted request-header

如果您的请求使用除上述方法之外的任何其他方法或设置非 CORS 安全列表 header ,它将自动进行预检。


供引用,OPTIONS 方法由 HTTP method definitions RFC 定义喜欢:

The OPTIONS method represents a request for information about the communication options available on the request/response chain identified by the Request-URI. This method allows the client to determine the options and/or requirements associated with a resource, or the capabilities of a server, without implying a resource action or initiating a resource retrieval.

Related Question

关于javascript - 为什么每个 Ember 数据存储事务都会向服务器发送额外的 OPTIONS 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42103430/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com