• HTTP options预请求


    什么是复杂请求?

    1、非head、get、post请求方法;
    2、Content-Type 的值不属于下列之一:application/x-www-form-urlencoded、multipart/form-data、text/plain;
    3、人为设置了以下集合之外首部字段:Accept/Accept-Language/Content-Language/Content-Type/DPR/Downlink/Save-Data/Viewport-Width/Width;

    什么是预请求?

    对那些可能对服务器数据产生副作用的 HTTP 请求方法(特别是 GET 以外的 HTTP 请求,或者搭配某些 MIME 类型的 POST 请求),浏览器必须首先使用 OPTIONS 方法发起一个预检请求(preflight request),从而获知服务端是否允许该跨域请求。服务器基于从预检请求头部获得的信息来判断,是否接受接下来的实际请求。

    预检请求头request header的关键字段

    Access-Control-Request-Method:告诉服务器实际请求所使用的 HTTP 方法
    Access-Control-Request-Headers:告诉服务器实际请求所携带的自定义首部字段,本次实际请求首部字段中content-type为自定义

    预检响应头response header的关键字段:

    Access-Control-Allow-Methods:返回了服务端允许的请求,包含GET/HEAD/PUT/PATCH/POST/DELETE
    Access-Control-Allow-Credentials:允许跨域携带cookie(跨域请求要携带cookie必须设置为true)
    Access-Control-Allow-Origin:允许跨域请求的域名,这个可以在服务端配置一些信任的域名白名单
    Access-Control-Request-Headers:客户端请求所携带的自定义首部字段content-type

    优化OPTIONS请求

    Access-Control-Max-Age这个响应首部表示 preflight request (预检请求)的返回结果(即 Access-Control-Allow-Methods 和Access-Control-Allow-Headers 提供的信息) 可以被缓存的最长时间,单位是秒。(MDN)

  • 相关阅读:
    CSS学习笔记 糖不苦
    Servlet与HTTP介绍学习 糖不苦
    new 的原理和实现 糖不苦
    HTML学习笔记 糖不苦
    事务的概念,以及事务在JDBC编程中处理事务的步骤 糖不苦
    前端JS获取用户位置 糖不苦
    数据接口请求异常:parsererror 糖不苦
    所有CSS字体属性 糖不苦
    jQuery CSS样式方法
    jQuery效果隐藏/显示,淡入/淡出,滑动,动画
  • 原文地址:https://www.cnblogs.com/superlizhao/p/12787716.html
Copyright © 2020-2023  润新知