你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

预检 Blob 请求

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 版本
OPTIONS http://<account-name>.blob.core.windows.net/<blob-resource> HTTP/1.1

URI 必须始终包含正斜杠 (/) ,以便将主机名与 URI 的路径和查询部分分开。 在此操作中,URI 的路径部分可以为空,也可以指向任何容器或 Blob 资源。

在发出预检请求时,资源可能存在,也可能不存在。 根据服务的 CORS 规则在服务级别评估预检请求,因此资源名称是否存在不会影响操作的成功或失败。

URI 参数

无。

请求标头

下表描述了必需请求标头和可选请求标头:

请求标头 说明
Origin 必需。 指定发出请求的来源。 将根据服务的 CORS 规则检查来源,以确定预检请求是成功还是失败。
Access-Control-Request-Method 必需。 指定请求的方法 (或 HTTP 谓词) 。 将根据服务的 CORS 规则检查该方法,以确定预检请求是成功还是失败。
Access-Control-Request-Headers 可选。 指定要发送的请求标头。 如果不存在,则服务会假定请求不包含标头。

请求正文

无。

响应

响应包括 HTTP 状态代码和一组响应标头。

状态代码

此操作成功后返回状态代码 200(正常)。

有关状态代码的信息,请参阅 状态和错误代码

响应头

此操作的响应包括以下标头。 响应还可能包括其他标准 HTTP 标头。 所有标准标头都符合 HTTP/1.1 协议规范

有关预检请求标头的详细信息,请参阅 CORS 规范

响应标头 说明
Access-Control-Allow-Origin 指示允许的源,如果预检请求成功,则与请求中的源标头匹配。
Access-Control-Allow-Methods 如果预检请求成功,则此标头设置为为请求标头 Access-Control-Request-Method指定的值。
Access-Control-Allow-Headers 如果预检请求成功,则此标头设置为为请求标头 Access-Control-Request-Headers指定的值。
Access-Control-Max-Age 指定允许用户代理为将来的请求缓存预检请求的时间长度。
Access-Control-Allow-Credentials 指示是否可以通过凭据发出请求。 此标头始终设置为 true

响应正文

无。

授权

操作 Preflight Blob Request 始终以匿名方式执行。 它不需要授权,如果提供了凭据,它会忽略凭据。

注意

如果已启用 Azure 存储分析并记录指标,则对操作的 Preflight Blob Request 调用将记录为 AnonymousSuccess。 出于此原因,如果在Azure 门户查看指标,将看到AnonymousSuccess记录的 。Preflight Blob Request 此指标并不表示专用数据已泄露,而只是指示 Preflight Blob Request 操作成功,状态代码为 200 (正常) 。

示例请求和响应

以下示例发送源 www.contoso.com的预检请求。 请求方法设置为 PUT,请求标头设置为 content-typeaccept

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 (错误请求) ,并且不会对请求计费。 格式不正确的请求的一个示例是不包含必需 OriginAccess-Control-Request-Method 标头的请求。

预检请求是一种机制,用于查询与特定存储帐户关联的存储服务的 CORS 功能。 预检请求不针对某个特定资源。

计费

定价请求可能源自使用 Blob 存储 API 的客户端,可以直接通过 Blob 存储 REST API 或 Azure 存储客户端库。 这些请求按事务产生费用。 事务类型会影响帐户的收费方式。 例如,读取事务累算到与写入事务不同的计费类别。 下表显示了基于存储帐户类型的请求的计费类别 Preflight Blob Request

操作 存储帐户类型 计费类别
预检 Blob 请求 高级块 blob
标准常规用途 v2
其他操作
预检 Blob 请求 标准常规用途 v1 读取操作

若要了解指定计费类别的定价,请参阅Azure Blob 存储定价

另请参阅

对帐户的操作 (Blob 存储)
对 Azure 存储的 CORS 支持