Поделиться через


Предварительный запрос файла

Перед Preflight File Request отправкой запроса операция запрашивает правила общего доступа к ресурсам независимо от источника (CORS) для Файлы Azure.

Веб-браузер или другой агент пользователя отправляет предварительный запрос, включающий домен источника, метод и заголовки для запроса, который агент хочет выполнить. Если функция CORS включена для Файлы Azure, Файлы Azure оценивает предварительный запрос на соответствие правилам CORS, настроенным владельцем учетной записи с помощью параметра Set File Service Properties. Файлы Azure затем принимает или отклоняет запрос.

Дополнительные сведения о CORS и предварительном запросе см. в спецификации CORS и поддержке CORS для службы хранилища Azure.

Доступность протокола

Включенный протокол общей папки Доступно
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. В случае этой операции путь может быть пустым или указывать на любой Файлы 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 всегда выполняется анонимно. Он не требует авторизации и игнорирует учетные данные, если они предоставлены.

Примечание

Если вы включили аналитику Preflight File Request службы хранилища Azure и регистрируете метрики, вызов операции регистрируется как 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 службы хранилища, связанной с определенной учетной записью хранения. Предварительный запрос не нацелен на конкретный ресурс.