你当前正在访问 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-type
和 accept
。
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 (错误请求) ,并且不会对请求计费。 格式不正确的请求的一个示例是不包含必需 Origin
和 Access-Control-Request-Method
标头的请求。
预检请求是一种机制,用于查询与特定存储帐户关联的存储服务的 CORS 功能。 预检请求不针对某个特定资源。