Была ли эта страница полезной?
Ваш отзыв об этом контенте важен для нас. Расскажите нам о том, что вы думаете.
Дополнительный отзыв?
1500 символов осталось
Указание условных заголовков для операций службы BLOB-объектов

Указание условных заголовков для операций службы BLOB-объектов

Обновлено: Апрель 2015 г.

Несколько операций в службе BLOB-объектов поддерживают использование условных заголовков. Условные заголовки можно указывать для выполнения операции только при указанном условии.

Служба BLOB-объектов работает с условными заголовками в соответствии со спецификацией протокола HTTP/1.1.

Поддерживаемые условные заголовки описаны в следующей таблице.

 

Условный заголовок Описание

If-Modified-Since

Значение DateTime. Укажите этот заголовок для выполнения операции только в том случае, если ресурс был изменен в указанное время.

If-Unmodified-Since

Значение DateTime. Укажите этот заголовок для выполнения операции только в том случае, если ресурс не был изменен в указанные дату и время.

If-Match

Значение ETag. Укажите этот заголовок для выполнения операции только в том случае, если ETag ресурса соответствует указанному значению. В версии 2011-08-18 и более новой ETag можно указывать в кавычках.

If-None-Match

Значение ETag или символ-шаблон (*). Укажите этот заголовок для выполнения операции только в том случае, если ETag ресурса не соответствует указанному значению. В версии 2011-08-18 и более новой ETag можно указывать в кавычках.

Укажите символ-шаблон (*) для выполнения операции только в том случае, если ресурс не существует, и отказа от операции, если он существует.

Начиная с версии 2013-08-15 операции Получение большого двоичного объекта и Получение свойств больших двоичных объектов поддерживают использование нескольких условных заголовков. Можно указать любое сочетание поддерживаемых условных заголовков. Служба BLOB-объектов оценит эти условия по следующему выражению:

If-Match && If-Unmodified-Since && (If-None-Match || If-Modified-Since)

Можно также указать несколько значений с разделителями-запятыми для условий If-Match и If-None-Match. Если будет указано несколько значений для условия If-Match, то перед оценкой всего выражения служба BLOB-объектов выполнит логическую операцию OR для всех предоставленных значений. Если будет указано несколько значений для условия if-None-Match, то перед оценкой всего выражения служба выполнит логическую операцию AND. Указание нескольких значений для условий If-Modified-Since и If-Unmodified-Since не поддерживается и ведет к получению ошибки 400 (Bad Request).

Эта функция включена для соответствия спецификации HTTP/1.1 и для применения в ситуациях, когда сеть доставки содержимого (CDN) или прокси-сервер добавляет дополнительные заголовки к обрабатываемому запросу. Ниже приведены некоторые примеры различных сочетаний условных заголовков.

Пример 1.

Рассмотрим запрос Получение большого двоичного объекта, содержащий заголовки If-Match и If-Modified-Since. В следующей таблице показан результаты, которые формируются при вычислении заголовков по отдельности и при их совокупном вычислении.

 

Условные заголовки Результат при вычислении по отдельности Результат при вычислении в сочетании

If-Match

412 (Необходимое условие не выполнено)

412 (Необходимое условие не выполнено)

If-Modified-Since

200 (OK)

If-Match

412 (Необходимое условие не выполнено)

412 (Необходимое условие не выполнено)

If-Modified-Since

304 (Не изменено)

If-Match

200 (OK)

200 (OK)

If-Modified-Since

200 (OK)

If-Match

200 (OK)

304 (Не изменено)

If-Modified-Since

304 (Не изменено)

Пример 2.

Рассмотрим запрос, содержащий заголовки If-None-Match и If-Modified-Since.

 

Условные заголовки Результат при вычислении по отдельности Результат при вычислении в сочетании

If-None-Match

304 (Не изменено)

200 (OK)

If-Modified-Since

200 (OK)

If-None-Match

200 (OK)

200 (OK)

If-Modified-Since

200 (OK)

If-None-Match

200 (OK)

200 (OK)

If-Modified-Since

304 (Не изменено)

If-None-Match

304 (Не изменено)

304 (Не изменено)

If-Modified-Since

304 (Не изменено)

Пример 3.

Рассмотрим запрос, содержащий заголовки If-Modified-Since, If-Match и If-Unmodified-Since.

 

Условные заголовки Результат при вычислении по отдельности Результат при вычислении в сочетании

If-Modified-Since

200 (OK)

412 (Необходимое условие не выполнено)

If-Match

412 (Необходимое условие не выполнено)

If-Unmodified-Since

200 (OK)

If-Modified-Since

200 (OK)

412 (Необходимое условие не выполнено)

If-Match

200 (OK)

If-Unmodified-Since

412 (Необходимое условие не выполнено)

If-Modified-Since

304 (Не изменено)

412 (Необходимое условие не выполнено)

If-Match

200 (OK)

If-Unmodified-Since

412 (Необходимое условие не выполнено)

If-Modified-Since

304 (Не изменено)

304 (Не изменено)

If-Match

200 (OK)

If-Unmodified-Since

200 (OK)

Пример 4.

Рассмотрим запрос, содержащий заголовки If-Modified-Since, If-None-Match, If-Unmodified-Since и If-Match.

 

Сочетание Отдельный код состояния HTTP Получение результата состояния большого двоичного объекта

If-Modified-Since

200 (OK)

200 (OK)

If-None-Match

200 (OK)

If-Unmodified-Since

200 (OK)

If-Match

200 (OK)

If-Modified-Since

200 (OK)

412 (Необходимое условие не выполнено)

If-None-Match

304 (Не изменено)

If-Unmodified-Since

412 (Необходимое условие не выполнено)

If-Match

200 (OK)

If-Modified-Since

200 (OK)

200 (OK)

If-None-Match

304 (Не изменено)

If-Unmodified-Since

200 (OK)

If-Match

200 (OK)

If-Modified-Since

304 (Не изменено)

412 (Необходимое условие не выполнено)

If-None-Match

200 (OK)

If-Unmodified-Since

200 (OK)

If-Match

412 (Необходимое условие не выполнено)

If-Modified-Since

304 (Не изменено)

412 (Необходимое условие не выполнено)

If-None-Match

200 (OK)

If-Unmodified-Since

412 (Необходимое условие не выполнено)

If-Match

412 (Необходимое условие не выполнено)

If-Modified-Since

304 (Не изменено)

200 (OK)

If-None-Match

200 (OK)

If-Unmodified-Since

200 (OK)

If-Match

200 (OK)

If-Modified-Since

304 (Не изменено)

412 (Необходимое условие не выполнено)

If-None-Match

304 (Не изменено)

If-Unmodified-Since

412 (Необходимое условие не выполнено)

If-Match

200 (OK)

При вызове операций чтения службы BLOB-объектов (Получение большого двоичного объекта и Получение свойств больших двоичных объектов) с версиями до 2013-08-15, и при вызове любых операций записи независимо от версии, учитывайте следующее:

  • Если в запросе указаны заголовки If-None-Match и If-Modified-Since, то запрос оценивается по критериям, указанным в If-None-Match.

  • Если в запросе указаны заголовки If-Match и If-Unmodified-Since, то запрос оценивается по критериям, указанным в If-Match.

  • За исключением двух сочетаний условных заголовков, приведенных выше, запрос может содержать только один условный заголовок. Указание более одного условного заголовка приведет к коду состояния 400 (Bad Request).

  • Если ответ включает ETag, проверьте версию запроса и ответа перед обработкой ETag. Например, версия 2011-08-18 и более поздние версии возвращают ETag в кавычках, а более старые — не возвращают. Убедитесь, что приложение может обрабатывать оба формата ETag, прежде чем их оценивать.

  • RFC 2616 допускает использование нескольких значений ETag в одном заголовке, однако запросы к службе BLOB-объектов могут содержать только одно значение ETag. Указание нескольких значений ETag приведет к получению кода состояния 400 (Bad Request).

Операции, поддерживающие условные заголовки, описаны в следующей таблице.

 

Операция REST

Тип операции

Поддерживаемые условные заголовки

Копирование большого двоичного объекта

Чтение и запись

Для условий в целевом BLOB-объекте:

  • If-Modified-Since 

  • If-Unmodified-Since 

  • If-Match 

  • If-None-Match 

Для условий в BLOB-объекте источника:

  • x-ms-source-if-modified-since 

  • x-ms-source-if-unmodified-since 

  • x-ms-source-if-match  

  • x-ms-source-if-none-match  

Удаление больших двоичных объектов

Запись

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Удалить контейнер

Запись

If-Modified-Since

If-Unmodified-Since

Получение большого двоичного объекта

Чтение

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Получение метаданных BLOB-объектов

Чтение

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Получение свойств больших двоичных объектов

Чтение

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Получение диапазонов страниц

Запись

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Аренда больших двоичных объектов

Запись

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Аренда контейнера

Запись

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Вставка большого двоичного объекта

Запись

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Вставка списка блокировок

Запись

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Вставка страницы

Запись

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Задание метаданных больших двоичных объектов

Запись

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Задание свойств больших двоичных объектов

Запись

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Задание списка управления доступом для контейнера

Запись

If-Modified-Since

If-Unmodified-Since

Задание метаданных контейнера

Запись

If-Modified-Since

Моментальные снимки больших двоичных объектов

Чтение

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Следующие операции с данными службы BLOB-объектов в настоящее время не поддерживают условные заголовки:

Если запрос включает условный заголовок и запрошенный ресурс не удовлетворяет указанному условию, то служба BLOB-объектов возвращает код ответа HTTP. Возвращаемые коды ответа соответствуют спецификации протокола HTTP/1.1 (RFC 2616).

Методы в клиентской библиотеке Azure .NET преобразуют эти коды ответа ошибок в StorageException. Образец кода, который обрабатывает исключения, вызванные условной операцией, см. в разделе How to Conditionally Refresh a Local Copy of a Blob.

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

 

Условный заголовок Код ответа при невыполнении условия

If-Modified-Since

Не изменено (304 (Не изменено))

If-Unmodified-Since

Необходимое условие не выполнено (412 (Необходимое условие не выполнено))

If-Match

Необходимое условие не выполнено (412 (Необходимое условие не выполнено))

If-None-Match

Не изменено (304 (Не изменено))

См. в приведенных выше примерах результаты, получаемые при использовании нескольких заголовков с версиями 2013-08-15 или более поздними версиями.

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

 

Условный заголовок Код ответа при невыполнении условия

If-Modified-Since

Необходимое условие не выполнено (412 (Необходимое условие не выполнено))

If-Unmodified-Since

Необходимое условие не выполнено (412 (Необходимое условие не выполнено))

If-Match

Необходимое условие не выполнено (412 (Необходимое условие не выполнено))

If-None-Match

Необходимое условие не выполнено (412 (Необходимое условие не выполнено))

В следующей таблице показаны коды ответа, возвращаемые при несоблюдении условия для каждого условного заголовка в случае, если операцией является операция копирования. Операция Копирование большого двоичного объекта использует команды PUT.

 

Условный заголовок Код ответа при невыполнении условия

If-Modified-Since

Необходимое условие не выполнено (412 (Необходимое условие не выполнено))

If-Unmodified-Since

Необходимое условие не выполнено (412 (Необходимое условие не выполнено))

If-Match

Необходимое условие не выполнено (412 (Необходимое условие не выполнено))

If-None-Match

Необходимое условие не выполнено (412 (Необходимое условие не выполнено))

x-ms-source-if-modified-since

Необходимое условие не выполнено (412 (Необходимое условие не выполнено))

x-ms-source-if-unmodified-since

Необходимое условие не выполнено (412 (Необходимое условие не выполнено))

x-ms-source-if-match

Необходимое условие не выполнено (412 (Необходимое условие не выполнено))

x-ms-source-if-none-match

Необходимое условие не выполнено (412 (Необходимое условие не выполнено))

См. также

Показ:
© 2015 Microsoft