天天看点

HTTP请求首部字段及响应首部字段

HTTP

请求方法包括:

POST、GET、PUT 、 DELETE、OPTIONS

等,对于除

GET

请求以外的

HTTP

请求,如果存在跨域请求,浏览器必须首先使用

OPTIONS

方法询问服务端是否允许跨域请求,然后才发起真正的请求,

OPTIONS

请求称为预检请求。

HTTP

请求首部字段,预检请求发送给服务器:

  • Origin

    预检请求或实际请求的原域名,不管是否为跨域请求,

    Origin

    字段总是被发送
  • Access-Control-Request-Method

    预检请求将实际请求的

    HTTP

    方法告诉服务器
  • Access-Control-Request-Headers

    预检请求将实际请求所携带的首部字段告诉服务器

HTTP

响应首部字段:

  • Access-Control-Allow-Origin

    服务器允许跨域访问的域,对于不需要携带身份凭证,服务器可以配置该属性为“*”。
    Access-Control-Allow-Origin: www.baidu.com
               
  • Access-Control-Allow-Methods

    服务器允许跨域请求的方法,用于预检请求的响应。
  • Access-Control-Allow-Headers

    服务器允许跨域请求携带的首部字段,用于预检请求的响应,可以自定义
    Access-Control-Allow-Headers: app-id
               
  • Access-Control-Allow-Credentials

    服务器允许跨域请求携带身份凭证(

    cookies、authorization headers、TLS client certificates

    等),如果允许,设置为

    true

    ,如果不允许则不需要设置,因为此属性只有

    true

    一个可选值。并且对于附带身份凭证的请求,

    Access-Control-Allow-Origin

    不能使用通配符
    Access-Control-Allow-Credentials: true
               
  • Access-Control-Expose-Headers

    服务器允许浏览器访问的头,默认情况下,浏览器只能获取到

    Cache-Control、Content-Language、Content-Type、Expires、Last-Modified

  • Access-Control-Max-Age

    服务器设置

    OPTIONS

    预检的缓存时长(以秒为单位),在缓存时长内,这个域不再发起预检请求,可以直接发起真正的

    HTTP

    请求
    Access-Control-Max-Age: 28800
               

继续阅读