CORS中的预检请求
有时候加载一个网页的时候会看到一个相同的异步请求发生两次,这就是CORS中的预检请求。
在CORS(Cross-Origin Resource Sharing)中,允许使用自定义的Headers,Methods和不同类型的请求内容,这个是一个透明的服务器端验证机制,这就叫预检请求(Preflighted Requests)。
当你想发起一个带着高级选项的请求时,一个预检请求首先会发生。这个预检请求使用的方法是“OPTIONS”,包含了以下Headers:
Origin, Access-Control-Request-Method,,Access-Control-Request-Headers;
请求发起后,服务器响应回复如下内容决定是否处理此类请求。
Access-Control-Allow-Origin: http://foo.example
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Headers: X-PINGOTHER, Content-Type
Access-Control-Max-Age: 86400
一旦预检请求发生,结果会被缓存(Access-Control-Max-Age)秒,下次就不会再请求了。
后记:
1,这种请求不需要手动设置什么,只要是符合条件的CORS,浏览器会自动发起。
2,这其实也会为了保护服务器,防止在请求时发生不必要的意外。