我有使用API的非常密集的单页面应用程序。假设应用程序位于application.com
。现在,如果我将API放在api.application.com
中,它将启用CORS,因此所有浏览器都会在实际请求之前发出OPTIONS
请求。
这会让我的应用程序变慢2倍吗?
答案 0 :(得分:9)
它可能不会让你的整个应用程序慢2倍。它有时会发出2个http请求。但您的应用可能不仅仅是HTTP请求,因此您必须衡量整个应用的效果。
浏览器发出预检的条件是:
GET
,HEAD
,POST
)或Accept
,Accept-Language
,Content-Language
或Content-Type
之外,还有HTTP标头(但前提是Content-Type
值不是application/x-www-form-urlencoded
,multipart/form-data
或text/plain
)如果您的HTTP请求不符合这些条件,则不会发出预检。预检是一个没有正文的小OPTIONS请求,所以它应该很快(取决于你的连接速度)。一旦您发出预检,其结果将缓存一段时间(缓存时间因浏览器而异.Chrome / Safari执行5分钟,FF执行24小时)。
如果您对减少预检的提示感兴趣,请参阅以下答案:How to apply CORS preflight cache to an entire domain