【问题标题】:OPTIONS request makes application 2x slower?OPTIONS 请求使应用程序慢 2 倍?
【发布时间】:2014-09-02 11:41:02
【问题描述】:

我有一个使用 API 的非常密集的单页应用程序。假设应用程序位于application.com。现在,如果我将 API 放在 api.application.com 中,它将启用 CORS,因此所有浏览器都会在实际请求之前发出 OPTIONS 请求。

这会使我的应用程序慢 2 倍吗?

【问题讨论】:

  • 你试过这个,它是否让它变慢了?
  • 这个问题不是基于意见的,您真的阅读了吗?
  • OPTIONS 请求的用户 Max-Age 标头,您的浏览器忘记了额外的选项请求

标签: api cors single-page-application


【解决方案1】:

它可能不会让您的整个应用程序慢 2 倍。它有时会发出 2 个 http 请求,而您可能期望一个。但您的应用可能不仅仅是 HTTP 请求,因此您必须衡量整个应用的性能。

浏览器发出预检的条件是:

  • HTTP 方法不是简单的方法(GETHEADPOST),或者
  • 存在除AcceptAccept-LanguageContent-LanguageContent-Type 之外的HTTP 标头(但仅当Content-Type 值不是application/x-www-form-urlencodedmultipart/form-datatext/plain 时)李>

如果您的 HTTP 请求不符合这些条件,则不会发出预检。预检是一个没有正文的小型 OPTIONS 请求,因此它应该很快(取决于您的连接速度)。而且一旦你发出预检,它的结果就会被缓存一段时间(缓存时间因浏览器而异。Chrome/Safari 为 5 分钟,FF 为 24 小时)。

如果您对减少预检的提示感兴趣,请参阅此答案:How to apply CORS preflight cache to an entire domain

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-06
    • 1970-01-01
    • 2016-06-23
    • 2016-04-19
    • 2018-04-17
    • 1970-01-01
    • 2016-07-27
    • 2019-09-17
    相关资源
    最近更新 更多