我有一个使用API的非常密集的单页应用程序。假设应用程序位于application.com
。现在,如果我将API放在api.application.com
中,它将启用CORS,因此所有浏览器都将在实际请求之前执行OPTIONS
请求。
这会使我的应用程序速度降低2倍吗?
它可能不会使整个应用程序变慢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