码迷,mamicode.com
首页 > 其他好文 > 详细

preflight request预检请求

时间:2019-12-22 16:44:49      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:script   bsp   post   access   content   method   pre   注意   cti   

preflight request预检请求,负责检查是否允许跨域请求,但是注意并不是所有的跨域请求都会发送preflight请求。对与那些幂等的请求,如GET请求,就不会发送preflight请求。只有那些会改变服务器状态的请求才可能发送preflight请求,如果POST、DELETE和PUT请求。

 

preflight请求是一个OPTIONS请求,由浏览器自动发送,前端开发者不会意识到它的存在。preflight请求必须有这三个请求头Access-Control-Request-Method、Access-Control-Request-Headers和Origin,然后服务器决定是否允许指定的请求方法、请求头和来源。

 

例如,客户端询问服务端是否支持DELET请求,在发送DELET请求之前,通过使用一个preflight请求

OPTIONS /resource/foo 
Access-Control-Request-Method: DELETE 
Access-Control-Request-Headers: origin, x-requested-with
Origin: https://foo.bar.org  

如果服务允许DELETE请求,然后响应一个Access-Control-Request-Method,其中包含DELETE

HTTP/1.1 204 No Content
Connection: keep-alive
Access-Control-Allow-Origin: https://foo.bar.org
Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE
Access-Control-Max-Age: 86400

预检请求也可以使用缓存,上面的响应就使用Access-Control-Max-Age头设置缓存时间。

preflight request预检请求

标签:script   bsp   post   access   content   method   pre   注意   cti   

原文地址:https://www.cnblogs.com/stronger-brother/p/12079918.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!