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

Sta*_*tan 6 api cors single-page-application

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

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

mon*_*sur 9

它可能不会使你的整个应用程序慢2倍.它有时会发出2个http请求.但是,您的应用可能不仅仅是HTTP请求,因此您必须衡量整个应用的效果.

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

  • HTTP方法不是一个简单的方法(GET,HEAD,POST),或
  • 有比其他HTTP头Accept,Accept-Language,Content-LanguageContent-Type(但只有当Content-Type值不是application/x-www-form-urlencoded,multipart/form-datatext/plain)

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

如果您对减少预检的技巧感兴趣,请参阅以下答案:如何将CORS预检缓存应用于整个域