Предварительный запрос таблицы
Перед 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