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

预检文件请求

Preflight File Request操作在发送请求之前查询跨域资源共享 (CORS) 规则以查找Azure 文件存储。

Web 浏览器或其他用户代理发送预检请求,其中包括代理要发出的请求的源域、方法和标头。 如果为Azure 文件存储启用了 CORS,则Azure 文件存储会针对帐户所有者通过设置文件服务属性配置的 CORS 规则评估预检请求。 然后Azure 文件存储接受或拒绝请求。

有关 CORS 和预检请求的详细信息,请参阅 AZURE 存储的 CORS 规范CORS 支持

协议可用性

已启用文件共享协议 可用
SMB 是
NFS 是

请求

可以按如下所示指定 Preflight File Request 。 将 <account-name> 替换为存储帐户的名称。 将 替换为 <file-resource> 将成为请求目标的共享、目录或文件资源。

HTTP 谓词 请求 URI HTTP 版本
OPTIONS http://<account-name>.file.core.windows.net/<file-resource>

http://<account-name>.file.core.windows.net/<file-resource>?restype=share

http://<account-name>.file.core.windows.net/<file-resource>?restype=directory
HTTP/1.1

URI 必须始终包含正斜杠 (/) ,以便将主机名与 URI 的路径和查询部分分开。 在此操作中,URI 的路径部分可以为空,也可以指向任何Azure 文件存储资源。 如果Azure 文件存储资源是共享或目录,则restype查询参数是必需的。

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

URI 参数

无。

请求标头

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

请求标头 说明
Origin 必需。 指定发出请求的来源。 将根据服务的 CORS 规则检查来源,以确定预检请求是成功还是失败。
Access-Control-Request-Method 必需。 指定请求的方法 (或 HTTP 谓词) 。 将根据服务的 CORS 规则检查该方法,以确定预检请求是成功还是失败。
Access-Control-Request-Headers 可选。 指定要发送的请求标头。 如果不存在,则服务会假定请求不包含标头。
x-ms-allow-trailing-dot: { <Boolean> } 可选。 版本 2022-11-02 及更高版本。 布尔值指定是否应剪裁请求 URL 中存在的尾随点。 有关详细信息,请参阅 命名和引用共享、目录、文件和元数据

请求正文

无。

响应

响应包括 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 File Request 始终以匿名方式执行。 它不需要授权,如果提供了凭据,它会忽略凭据。

注意

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

示例请求和响应

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

OPTIONS http://myaccount.file.core.windows.net/myshare/myfile  
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 功能。 预检请求不针对某个特定资源。