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

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

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

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

Запрос

Можно указать Preflight Table Request следующим образом. Замените <account-name> именем своей учетной записи хранения. Замените <table-resource> именем табличного ресурса, который будет целевым объектом запроса.

HTTP-команда Универсальный код ресурса (URI) запроса параметр "Версия HTTP"
OPTIONS http://<account-name> .table.core.windows.net/<table-resource> HTTP/1.1

Универсальный код ресурса (URI) всегда должен содержать косую черту (/), чтобы отделить имя узла от частей пути и запроса URI. В случае этой операции часть URI пути может быть пустой или указывать на любой ресурс таблицы.

Ресурс может существовать или не существовать во время предварительного запроса. Предварительный запрос оценивается на уровне службы в зависимости от правил 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 Table Request всегда выполняется анонимно. Он не требует авторизации и игнорирует учетные данные, если они предоставлены.

Примечание

Если вы включили аналитику Preflight Table Request службы хранилища Azure и регистрируете метрики, вызов операции регистрируется как AnonymousSuccess. По этой причине, если просмотреть метрики в портал Azure, вы увидитеAnonymousSuccess, что зарегистрировано для Preflight Table Request. Эта метрика не указывает на то, что ваши личные данные были скомпрометированы, а только о том, что Preflight Table Request операция выполнена успешно с кодом состояния 200 (ОК).

Пример запроса и ответа

В следующем примере отправляется предварительный запрос для источника www.contoso.com. Метод запроса имеет значение PUT, а заголовки запроса — content-type в и accept.

OPTIONS http://myaccount.table.core.windows.net/mytable  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 службы хранилища, связанной с определенной учетной записью хранения. Предварительный запрос не нацелен на конкретный ресурс.

См. также раздел

Операции с учетной записью (хранилище таблиц)
Поддержка CORS для службы хранилища Azure