OPTIONS请求使应用程序2x变慢?

时间:2014-07-11 18:56:02

标签: api cors single-page-application

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

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

1 个答案:

答案 0 :(得分:9)

它可能不会让你的整个应用程序慢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