HTTP header中Access-Control-开头的响应头
发布日期:2022-02-24 11:35:53 浏览次数:8 分类:技术文章

本文共 5176 字,大约阅读时间需要 17 分钟。

Access-Control-Allow-Credentials

Access-Control-Allow-Credentials响应报头指示的请求的响应是否可以暴露于该页面。当true值返回时它可以被暴露。

Credentials可以是 cookies, authorization headers TLS client certificates

当作为对预检请求的响应的一部分使用时,它指示是否可以使用凭证进行实际请求。请注意,简单的GET请求不是预检的,所以如果请求使用凭证的资源,如果此资源不与资源一起返回,浏览器将忽略该响应,并且不会返回到 Web 内容。

Access-Control-Allow-Credentials header 文件与该属性或者在提取 API credentials构造函数中的选项一起工作。必须在双方(Access-Control-Allow-Credentials header XHR Fetch 请求中)设置证书,以使 CORS 请求凭证成功。

Header type

Response header

Forbidden header name

no

语法

Access-Control-Allow-Credentials: true

指令

True -- 这个头的唯一有效值(区分大小写)。如果不需要credentials,相比将其设为false,请直接忽视这个头例子

允许凭证:

Access-Control-Allow-Credentials: true

使用 凭证:

var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://example.com/', true);
xhr.withCredentials = true;
xhr.send(null);

使用凭证:

fetch(url, {
 credentials: 'include'  
})

规范

Specification

Status

Comment

FetchThe definition of 'Access-Control-Allow-Credentials' in that specification.

Living Standard

Initial definition

 

Access-Control-Allow-Headers

响应首部 Access-Control-Allow-Headers 用于  (预检请求)中,列出了将会在正式请求的  字段中出现的首部信息。

简单首部,如  (只限于解析后的值为 application/x-www-form-urlencodedmultipart/form-data  text/plain 三种MIME类型(不包括参数)),它们始终是被支持的,不需要在这个首部特意列出。

如果请求中含有  字段,那么这个首部是必要的

Header type

no

Access-Control-Allow-Headers: 
[,
]*
Access-Control-Allow-Headers: *

<header-name>

可支持的请求首部名字。请求头会列出所有支持的首部列表,用逗号隔开。

注意以下这些特定的首部是一直允许的:, , ,  (但只在其值属于 MIME 类型 application/x-www-form-urlencodedmultipart/form-data  text/plain中的一种时)。这些被称作,你无需特意声明它们。

* (wildcard)

对于没有凭据的请求(没有HTTP cookieHTTP认证信息的请求),值“ *仅作为特殊的通配符值。 在具有凭据的请求中,它被视为没有特殊语义的文字标头名称“ *” 请注意,标头不能使用通配符,并且始终需要明确列出。

下面是 Access-Control-Allow-Headers 标头的一个示例。 它表明,除了CORS安全清单列出的请求标头外,对服务器的CORS请求还支持名为X-Custom-Header的自定义标头。

Access-Control-Allow-Headers: X-Custom-Header

此示例展示了支持多个标头时的 Access-Control-Allow-Headers 

Access-Control-Allow-Headers: X-Custom-Header, Upgrade-Insecure-Requests

让我们看一个涉及Access-Control-Allow-Headers的预检请求示例。 

Request

First, the request.  The preflight request is an  request which includes some combination of the three preflight request headers: , , and , such as:

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

Response

If the server allows CORS requests to use the  method, it responds with an  response header, which lists DELETE along with the other methods it supports:

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

If the requested method isn't supported, the server will respond with an error.

Specification

Status

Comment

Living Standard

Initial definition.

 

Access-Control-Allow-Methods

响应首部 Access-Control-Allow-Methods 在对 .(预检请求)的应答中明确了客户端所要访问的资源允许使用的方法或方法列表。

报头类型

no

Access-Control-Allow-Methods: 
,
, ...

<method>

用逗号隔开的允许使用的  列表。

Access-Control-Allow-Methods: POST, GET, OPTIONS

规范

状态

注释

Living Standard

Initial definition

 

Access-Control-Allow-Origin

Access-Control-Allow-Origin 响应头指定了该响应的资源是否被允许与给定的共享。

 

Header type

no

Access-Control-Allow-Origin: *
Access-Control-Allow-Origin: 

*

对于不需具备凭证(credentials)的请求,服务器会以*作为通配符,从而允许所有域都具有访问资源的权限。

<origin>

指定一个可以访问资源的URI

如需允许所有资源都可以访问的资源,您可以如此设置:

Access-Control-Allow-Origin: *

如需允许https://developer.mozilla.org访问您的资源,您可以设置:

Access-Control-Allow-Origin: https://developer.mozilla.org

如果服务器未使用*,而是指定了一个域,那么为了向客户端表明服务器的返回会根据Origin请求头而有所不同,必须在响应头中包含Origin

Access-Control-Allow-Origin: https://developer.mozilla.org
Vary: Origin

规范

状态

注释

Living Standard

初始定义

 

Access-Control-Expose-Headers

响应首部 Access-Control-Expose-Headers 列出了哪些首部可以作为响应的一部分暴露给外部。

默认情况下,只有七种  (简单响应首部)可以暴露给外部:

如果想要让客户端可以访问到其他的首部信息,可以将它们在 Access-Control-Expose-Headers 里面列出来。

Header type

no

Access-Control-Expose-Headers: 
,
, ...

<header-name>

包含0个或多个除  (简单响应首部)之外的列表,可以暴露给外部,供页面资源使用。

想要暴露一个非简单响应首部,可以这样指定:

Access-Control-Expose-Headers: Content-Length

想要额外暴露自定义的首部,例如 X-Kuma-Revision,可以指定多个,用逗号隔开:

Access-Control-Expose-Headers: Content-Length, X-Kuma-Revision

Access-Control-Max-Age

Access-Control-Max-Age响应 header 指示多长时间的结果(即包含在所述信息Access-Control-Allow-MethodsAccess-Control-Allow-Headers headers )可以被缓存。

Header type

Response header

Forbidden header name

no

语法

Access-Control-Max-Age: 

指令

<delta-seconds> 结果可以被缓存的最大秒数。

Firefox 86400秒)和600秒)的 Chromium Chromium 还指定了5秒的默认值。

值为-1将禁用缓存,需要对所有呼叫进行预检选项检查。

例子

将预检请求的结果缓存10分钟:

Access-Control-Max-Age: 600

 

Access-Control-Request-Headers

Access-Control-Request-Headers发出请求时报头用于让服务器知道哪些 HTTP 头的实际请求时将被使用。

Header type

Request header

Forbidden header name

yes

语法

Access-Control-Request-Headers: 
,
, ...

指令

<header-name> 请求中包含的 HTTP header 的逗号分隔列表。

例子

Access-Control-Request-Headers: X-PINGOTHER, Content-Type

 

Access-Control-Request-Method

Access-Control-Request-Method发出请求时报头用于让服务器知道哪些 HTTP 方法的实际请求时将被使用。这个头是必要的,因为预检请求始终是一个OPTIONS,并且不使用与实际请求相同的方法。

Header type

Request header

Forbidden header name

yes

语法

Access-Control-Request-Method: 

指令

<method> HTTP 请求的方法之一,例如GETPOST,或DELETE

例子

Access-Control-Request-Method: POST

 

转载地址:https://blog.csdn.net/hulinhulin/article/details/115358144 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:微信小程序压缩图片及上传至云存储
下一篇:HTTP 响应头信息

发表评论

最新留言

很好
[***.229.124.182]2024年03月17日 19时14分43秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

oracle里面如何查询sqlid,CSS_oracle中如何查看sql, --查询表状态:  select uo.O - phpStudy... 2019-04-21
oracle 查询中用case,oracle case when 在查询时候的用法。 2019-04-21
oracle正在运行的程序包,ORACLE PL/SQL编程详解之程序包的创建与应用 2019-04-21
php局部页面滚动,在访问另一页面后保留浏览器滚动位置 - php 2019-04-21
jmeter运行linux命令行,Jmeter在linux上运行(命令行运行Jmeter) 2019-04-21
linux服务器怎么添加站点,如何增加站点或虚拟主机及文件说明 2019-04-21
linux系统输入指令,Linux系统基础 - 基本操作命令 2019-04-21
linux设备管理命令,Linux命令(设备管理).doc 2019-04-21
linux 中文utf-8转gbk编码,Linux平台下 GBK编码转UTF-8编码 2019-04-21
linux安装软件在boot,在Linux系统上安装Spring boot应用的教程详解 2019-04-21
linux进入用户user1主目录,Linux系统命令提示符为[user1@localhost root]当前用户所在目录为( )... 2019-04-21
取消linux自动登录,linuxdeepin 如何取消自动登录啊? 2019-04-21
linux线程存储,Linux系统编程手册:线程:线程安全和每线程存储 2019-04-21
linux以root账号登陆gnome,CentOS 7 - 以root身份登入Gnome 2019-04-21
linux crontab 备份数据库 空文件,Linux下使用crontab自动备份数据库 2019-04-21
linux批处理模式,巧用linux-top的批处理模式 2019-04-21
linux信号量机制例题,第二章 信号量机制及几个经典例题 2019-04-21
linux ba 模拟,在你的 Python 游戏中模拟引力 | Linux 中国 2019-04-21
c语言表达式3649的值是,535个C语言经典实例目录.doc 2019-04-21
c语言Wndproc未定义,小弟我用c语言写了一个windows窗口,为什么有提示未定义的变量类型... 2019-04-21