该
Preflight Blob Request
操作在发送请求之前查询跨域资源共享 (CORS) 规则以查找Azure Blob 存储。
Web 浏览器或其他用户代理发送预检请求,其中包括代理要发出的请求的源域、方法和标头。 如果为 Blob 存储启用了 CORS,则 Blob 存储会根据帐户所有者通过
设置 Blob 服务属性
配置的 CORS 规则评估预检请求。 然后,Blob 存储接受或拒绝该请求。
有关 CORS 和预检请求的详细信息,请参阅
AZURE 存储的 CORS 规范
和
CORS 支持
。
可以按如下所示指定
Preflight Blob Request
。 将
<account-name>
替换为存储帐户的名称。 将 替换为
<blob-resource>
将成为请求目标的容器或 Blob 资源。
HTTP 谓词
请求 URI
HTTP 版本
URI 必须始终包含正斜杠 (/) ,以便将主机名与 URI 的路径和查询部分分开。 在此操作中,URI 的路径部分可以为空,也可以指向任何容器或 Blob 资源。
在发出预检请求时,资源可能存在,也可能不存在。 根据服务的 CORS 规则在服务级别评估预检请求,因此资源名称是否存在不会影响操作的成功或失败。
URI 参数
下表描述了必需请求标头和可选请求标头:
Access-Control-Request-Method
必需。 指定请求的方法 (或 HTTP 谓词) 。 将根据服务的 CORS 规则检查该方法,以确定预检请求是成功还是失败。
Access-Control-Request-Headers
可选。 指定要发送的请求标头。 如果不存在,则服务会假定请求不包含标头。
响应包括 HTTP 状态代码和一组响应标头。
此操作成功后返回状态代码 200(正常)。
有关状态代码的信息,请参阅
状态和错误代码
。
此操作的响应包括以下标头。 响应还可能包括其他标准 HTTP 标头。 所有标准标头都符合
HTTP/1.1 协议规范
。
有关预检请求标头的详细信息,请参阅
CORS 规范
。
如果已启用 Azure 存储分析并记录指标,则对操作的
Preflight Blob Request
调用将记录为
AnonymousSuccess
。 出于此原因,如果在Azure 门户查看指标,将看到
AnonymousSuccess
记录的 。
Preflight Blob Request
此指标并不表示专用数据已泄露,而只是指示
Preflight Blob Request
操作成功,状态代码为 200 (正常) 。
示例请求和响应
以下示例发送源
www.contoso.com
的预检请求。 请求方法设置为
PUT
,请求标头设置为
content-type
和
accept
。
OPTIONS http://myaccount.blob.core.windows.net/mycontainer/myblockblob HTTP/1.1
Accept: */*
Origin: www.contoso.com
Access-Control-Request-Method: PUT
Access-Control-Request-Headers: content-type, accept
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)
Content-Length: 0
响应指示为服务启用了 CORS,并且 CORS 规则与预检请求匹配:
HTTP/1.1 200 OK
Connection: Keep-Alive
Content-Length: 0
Content-Type: text/html; charset=UTF-8
Access-Control-Allow-Origin: *
Access-Control-Max-Age: 60
Access-Control-Allow-Methods: PUT
Access-Control-Allow-Headers: accept,content-type
如果为服务启用了 CORS,并且 CORS 规则与预检请求匹配,则服务会响应状态代码为 200 的预检请求, (正常) 。 响应包含所需的 Access-Control
标头。 在这种情况下,对请求进行计费。
如果未启用 CORS 或者不存在与预检请求匹配的 CORS 规则,则服务将使用状态代码 403(“禁止”)进行响应。 在这种情况下,不会对请求计费。
OPTIONS
如果请求格式不正确,服务会响应状态代码 400 (错误请求) ,并且不会对请求计费。 格式不正确的请求的一个示例是不包含必需 Origin
和 Access-Control-Request-Method
标头的请求。
预检请求是一种机制,用于查询与特定存储帐户关联的存储服务的 CORS 功能。 预检请求不针对某个特定资源。
定价请求可能源自使用 Blob 存储 API 的客户端,可以直接通过 Blob 存储 REST API 或 Azure 存储客户端库。 这些请求按事务产生费用。 事务类型会影响帐户的收费方式。 例如,读取事务累算到与写入事务不同的计费类别。 下表显示了基于存储帐户类型的请求的计费类别 Preflight Blob Request
:
存储帐户类型