import flask flask.Response(response=None, status=None, headers=None, mimetype=None, content_type=None, direct_passthrough=False)
response=None
- ответ в виде итератора строк или bytes
, status=None
- HTTP-статус, строка или целое число,headers=None
- объект werkzeug.datastructures.Headers
,mimetype=None
- тип mimetype
контента, content_type=None
- поле заголовка Content-Type
,direct_passthrough=False
- отвечает за передачу тела ответа напрямую как итерацию WSGIResponse
.Класс Response()
модуля flask
создает объект ответа, который по умолчанию используется в Flask и в приложении доступен через прокси-объект flask.response
.
Работает так же, как объект ответа от Werkzeug, но по умолчанию настроен на mimetype
равный text/html
. Часто нет необходимости создавать этот объект самостоятельно, так как это легко можно сделать при помощи функции flask.make_response()
когда это потребуется.
Если необходимо заменить используемый по умолчанию объект ответа, то можно создать подкласс flask.Response
и установить созданный подкласс в app.response_class
.
Response
.Response.accept_ranges
заголовок ответа Accept-Ranges
,Response.access_control_allow_credentials
заголовок ответа Access-Control-Allow-Credentials
,Response.access_control_allow_headers
заголовок ответа Access-Control-Allow-Headers
,Response.access_control_allow_methods
заголовок ответа Access-Control-Allow-Мethods
,Response.access_control_allow_origin
заголовок ответа Access-Control-Allow-Origin
,Response.access_control_expose_headers
заголовок ответа Access-Control-Expose-Headers
,Response.access_control_max_age
заголовок ответа Access-Control-Max-Age
,Response.add_etag()
добавляет заголовок ответа ETag
,Response.age
заголовок ответа Age
,Response.allow
набор HTTP-методов, поддерживаемых URI запроса,Response.cache_control
заголовок ответа Cache-Control
,Response.calculate_content_length()
возвращает длину тела ответа сервера,Response.call_on_close()
добавляет функцию, которая выполнится в конце ответа,Response.close()
закрывает обернутый ответ сервера,Response.content_encoding
заголовок ответа Content-Encoding
,Response.content_language
заголовок ответа Content-Language
,Response.content_length
заголовок ответа Content-Length
,Response.content_location
заголовок ответа Content-Location
,Response.content_md5
заголовок ответа Content-MD5
,Response.content_range
заголовок ответа Content-Range
,Response.content_security_policy
заголовок ответа Content-Security-Policy
,Response.content_security_policy_report_only
заголовок ответа Content-Security-Policy-Report-Only
,Response.content_type
заголовок ответа Content-Type
,Response.cross_origin_embedder_policy
заголовок ответа Cross-Origin-Embedder-Policy
,Response.cross_origin_opener_policy
заголовок ответа Cross-Origin-Opener-Policy
,Response.data
дескриптор, вызывающий методы ответа get_data()
и set_data()
,Response.date
заголовок ответа Date
,Response.delete_cookie()
удаляет файл cookie
,Response.direct_passthrough
передает тело ответа как итерацию WSGI,Response.expires
заголовок ответа Expires
,Response.force_type()
обеспечивает, чтобы ответ WSGI был текущего типа,Response.freeze()
готовит ответ к процессу pickled
,Response.from_app()
создает новый ответ из данных приложения,Response.get_app_iter()
возвращает итератор ответа приложения для environ
,Response.get_data()
строковое представление тела ответа,Response.get_etag()
возвращает кортеж (Etag, is_weak)
,Response.get_json()
содержит проанализированные данные JSON,Response.get_wsgi_headers()
возвращает копию заголовков из ответа с изменениями,Response.get_wsgi_response()
возвращает окончательный ответ WSGI,Response.is_json
проверяет mimetype
на значение application/json
,Response.is_sequence
будет True
, если итератор буферизован,Response.is_streamed
будет True
, если ответ передается потоком,Response.iter_encoded()
возвращает закодированный итератор ответа,Response.json
содержит данные JSON ответа сервера,Response.last_modified
заголовок ответа Last-Modified
,Response.location
заголовок ответа Location
,Response.make_conditional()
делает ответ на запрос условным,Response.make_sequence()
преобразует итерируемый ответ в список,Response.max_cookie_size
доступ к ключу конфигурации MAX_COOKIE_SIZE
,Response.mimetype
значение mimetype
,Response.mimetype_params
содержит словарь с параметрами mimetype
,Response.retry_after
заголовок ответа Retry-After
,Response.set_cookie()
устанавливает файл cookie
,Response.set_data()
задает новое тело в качестве ответа сервера,Response.set_etag()
устанавливает заголовок ETag
,Response.status
код состояния HTTP в виде строки,Response.status_code
код состояния HTTP в виде числа,Response.stream
содержит тело ответа, в качестве потока,Response.vary
заголовок ответа Vary
,Response.www_authenticate
заголовок ответа WWW-Authenticate
.Response.accept_ranges
:Атрибут Response.accept_ranges
представляет собой заголовок ответа Accept-Ranges
. Даже если имя указывает на то, что поддерживается несколько значений, это должен быть только один строковый токен.
Значения 'bytes'
и 'none'
являются общими.
Response.access_control_allow_credentials
:Свойство Response.access_control_allow_credentials
представляет собой заголовок ответа Access-Control-Allow-Credentials
, проверяет, может ли браузер передавать учетные данные коду JavaScript.
Как часть предварительного запроса, он указывает, могут ли учетные данные использоваться в кросс-доменном запросе.
Response.access_control_allow_headers
:Атрибут Response.access_control_allow_headers
представляет собой заголовок ответа Access-Control-Allow-Headers
.
Это заголовки, которые могут быть отправлены в кросс-доменном запросе.
Response.access_control_allow_methods
:Атрибут Response.access_control_allow_methods
представляет собой заголовок ответа Access-Control-Allow-Мethods
.
Это HTTP-методы, которые можно использовать в кросс-доменном запросе.
Response.access_control_allow_origin
:Атрибут Response.access_control_allow_origin
представляет собой заголовок ответа Access-Control-Allow-Origin
.
Значения 'origin'
или '*'
для любого источника, который может запрашивать кросс-доменный запрос.
Response.access_control_expose_headers
:Атрибут Response.access_control_expose_headers
представляет собой заголовок ответа Access-Control-Expose-Headers
.
Позволяет указать серверу, какие заголовки ответа должны быть доступны для кода JavaScript, запущенным в браузере, в ответ на кросс-доменный запрос.
Какие заголовки могут быть разделены браузером для кода JavaScript.
Response.access_control_max_age
:Атрибут Response.access_control_max_age
представляет собой заголовок ответа Access-Control-Max-Age
.
Максимальный возраст в секундах, для которого можно кэшировать настройки контроля доступа, то есть информация, содержащаяся в заголовках Access-Control-Allow-Methods
и Access-Control-Allow-Headers
.
Response.add_etag(overwrite=False, weak=False)
:Метод Response.add_etag()
добавляет заголовок ответа ETag
для текущего ответа, если его еще нет.
Заголовок ETag
HTTP-ответа - это идентификатор определенной версии ресурса. Он позволяет кэшировать более эффективно и экономить пропускную способность канала, так как веб-серверу не нужно повторно отправлять полный ответ, если содержимое не изменилось. Кроме того, теги etag
помогают предотвратить одновременное обновление ресурса от перезаписи друг друга.
Если ресурс по заданному URL-адресу изменяется, необходимо сгенерировать новое значение Etag
. Их сравнение может определить, являются ли два ресурса одинаковыми. Таким образом, Etag
похож на отпечатки пальцев и могут использоваться некоторыми серверами для отслеживания.
Изменено в версии 2.0: для генерации значения, используется алгоритм SHA-1
. Алгоритм MD5
может быть недоступен в некоторых средах.
Response.age
:Атрибут Response.age
- представляет собой заголовок ответа Age
, содержит время в секундах, в течение которого объект ответа находился в прокси-кэше.
Заголовок Age
обычно близок к нулю. Если это так Age: 0
, то он, вероятно, был просто извлечен с исходного сервера; в противном случае, он вычисляется как разница между текущей датой прокси-сервера и общим заголовком Date
, включенным в HTTP-ответ
Значения возраста являются неотрицательными десятичными целыми числами, представляющими время в секундах.
Response.allow
:Свойство Response.allow
содержит набор HTTP-методов, поддерживаемых ресурсом, определенным URI запроса. Представляет собой объект werkzeug.datastructures.HeaderSet
. Ведет себя подобно множеству set
Python:
>>> resp.allow(['foo', 'bar']) # добавит значение заголовка >>> resp.allow.add('baz']) >>> resp.allow # HeaderSet(['foo', 'bar', 'baz']) # удалит значение заголовка >>> resp.allow.discard('foo') # преобразует в строку HTTP-заголовка. >>> resp.allow.to_header() # эквивалентно >>> str(resp.allow) # очистит заголовок. >>> resp.allow.clear()
Цель этого поля - строго информировать получателя о допустимых методах, связанных с ресурсом. Поле заголовка Allow
ДОЛЖНО присутствовать в ответе 405 Method Not Allowed
.
Response.cache_control
:Свойство Response.cache_control
представляет собой заголовок ответа Cache-Control
в формате werkzeug.datastructures.ResponseCacheControl
.
Этот заголовок используется для указания директив, которым ДОЛЖНЫ подчиняться все механизмы кэширования в цепочке запрос/ответ. Инструкции кэширования однонаправленные: заданная инструкция в запросе не подразумевает, что такая же инструкция будет указана в ответе
Response.calculate_content_length()
:Метод Response.calculate_content_length()
если доступен, то возвращает длину int
тела ответа сервера, в противном случае - None
.
Response.call_on_close(func)
:Метод Response.call_on_close()
добавляет функцию func
во внутренний список функций, которые должны вызываться как часть закрытия ответа (в конце ответа сервера).
Начиная с версии 0.7 эта функция также возвращает переданную функцию, поэтому ее можно использовать в качестве декоратора.
Response.close()
:Метод Response.close()
закрывает обернутый ответ, если это возможно. Также можно использовать объект в операторе with
, который автоматически его закроет.
Response.content_encoding
:Атрибут Response.content_encoding
представляет собой заголовок ответа Content-Encoding
.
Используется как модификатор типа медиа. Если он присутствует, то его значение указывает, какие дополнительные кодировки контента были применены к телу объекта и, следовательно, какие механизмы декодирования должны быть применены для получения медиа-типа, на который ссылается значение заголовка Content-Type
.
Response.content_language
:Свойство Response.content_language
представляет собой заголовок ответа Content-Language
в формате werkzeug.datastructures.HeaderSet
.
Свойство Response.content_language
ведет себя как Response.allow
.
Используется для описания языков контента доступных для аудитории, позволяя таким образом пользователю выбрать язык в соответствии со своими предпочтениями. Например, если установлен заголовок "Content-Language: de-DE"
, это говорит о том, что документ предназначен для носителей немецкого языка (однако это не означает, что документ написан на немецком языке). Это может быть документ на английском языке в рамках языкового курса для носителей немецкого языка).
Если заголовок Content-Language
не указан, то по умолчанию предполагается, что содержимое предназначено для всех языковых аудиторий. Также допустимо использование в заголовке нескольких языковых тегов. Заголовок Content-Language
может применяться не только к текстовым документам но и другим типам контента.
Response.content_length
:Атрибут Response.content_length
представляет собой заголовок ответа Content-Length
, указывает размер тела объекта в десятичном числе OCTET, отправленных получателю, или, в случае метода HEAD
, размер тела объекта, которое было бы отправлено, если бы запрос был GET
.
Response.content_location
:Атрибут Response.content_location
представляет собой заголовок ответа Content-Location
. Заголовок указывает альтернативное расположение возвращаемых данных. Основное использование заключается в указании URL-адреса ресурса, передаваемого в результате согласования содержимого.
Заголовки Location
и Content-Location
разные. Location
указывает URL-адрес перенаправления, а Content-Location
указывает прямой URL-адрес для доступа к ресурсу без дальнейшего согласования содержимого в будущем. Location
- это заголовок, связанный с ответом, а Content-Location
связан с возвращаемыми данными. Без примеров это различие может показаться абстрактным.
Допустим, API сайта может возвращать данные в форматах JSON
, XML
или CSV
. Если URL-адрес для конкретного документа находится по адресу https://example.com/documents/foo
, то сайт может возвращать разные URL-адреса для размещения содержимого в зависимости от заголовка запроса Accept
. Например:
Accept: application/json, text/json
-> Content-Location: /documents/foo.json
Accept: application/xml, text/xml
-> Content-Location: /documents/foo.xml
Accept: text/plain, text/*
-> Content-Location: /documents/foo.csv
Эти URL-адреса являются примерами, сайт может обслуживать различные типы файлов с любыми шаблонами URL, например, такими как параметр строки запроса: /documents/foo?format=json
, /documents/foo?format=xml
и так далее.
Response.content_md5
:Атрибут Response.content_md5
представляет собой заголовок ответа Content-MD5
, как определено в RFC 1864. Это дайджест MD5 тела объекта с целью обеспечения сквозной проверки целостности сообщения (MIC) тела объекта.
Примечание: MIC хорош для обнаружения случайной модификации тела объекта при передаче, но не является защитой от злонамеренных атак.
Response.content_range
:Свойство Response.content_range
представляет собой заголовок ответа Content-Range
в формате werkzeug.datastructures.ContentRange
. Свойство доступно, даже если заголовок не задан.
Заголовок указывает, где в сообщении с полным текстом находится частичное сообщение, например Content-Range: bytes 200-1000/67589
.
Синтаксис заголовка:
Content-Range: <unit> <range-start>-<range-end>/<size> Content-Range: <unit> <range-start>-<range-end>/* Content-Range: <unit> */<size>
Response.content_security_policy
:Атрибут Response.content_security_policy
представляет собой заголовок ответа Content-Security-Policy
.
Добавляет дополнительный уровень безопасности, помогающий обнаруживать и смягчать определенные типы атак, таких как Cross Site Scripting (XSS) и атаки внедрения данных. Спектр применения этих атак включает, но не ограничивается кражей данных, подменой страниц и распространением зловредного ПО.
Дополнительно смотрите материал "Безопасность веб-приложения на Flask".
Response.content_security_policy_report_only
:Атрибут Response.content_security_policy_report_only
представляет собой заголовок ответа Content-Security-Policy-Report-Only
Этот заголовок позволяет веб-разработчикам экспериментировать с политиками, отслеживая (но не применяя) их действие, тем самым помогая обнаруживать определенные типы атак. Отчеты о нарушениях состоят из документов JSON, отправленных по запросу HTTP POST на указанный URI.
Response.content_type
:Атрибут Response.content_type
представляет собой заголовок ответа Content-Type
используется для того, чтобы определить MIME тип ресурса или, в случае метода HEAD
, тип носителя, который был бы отправлен, если бы запрос был GET
.
В ответах сервера заголовок Content-Type
сообщает клиенту, какой будет тип передаваемого контента. В некоторых случаях браузеры пытаются сами определить MIME тип передаваемого контента, но их реакция может быть неадекватной. Чтобы предотвратить такие ситуации, можно установить в заголовке X-Content-Type-Options
значение 'nosniff'
.
В запросах, таких, как POST
или PUT
, клиент сообщает серверу тип отправляемых данных.
Response.cross_origin_embedder_policy
:Атрибут Response.cross_origin_embedder_policy
представляет собой заголовок ответа Cross-Origin-Embedder-Policy
.
Этот заголовок предотвращает/запрещает загрузку документа любыми ресурсами в кросс-доменном запросе (разными источниками), которые явно не предоставляют разрешение на документ.
Значения должны быть членами перечисления werkzeug.http.COEP
.
Response.cross_origin_opener_policy
:Атрибут Response.cross_origin_opener_policy
представляет собой заголовок ответа Cross-Origin-Opener-Policy
. Значения атрибута должны быть членами перечисления werkzeug.http.COEP
.
Этот заголовок позволяет гарантировать, что документ верхнего уровня не разделяет группу контекста просмотра с документами из разных источников.
Заголовок ответа Cross-Origin-Opener-Policy
изолирует документ, и потенциальные злоумышленники не смогут получить доступ к глобальному объекту, если бы они открывали его во всплывающем окне, предотвращая серию атак с перекрестным происхождением, получивших название XS-Leaks
.
Если документ с перекрестным происхождением с Cross-Origin-Opener-Policy
открывается в новом окне, в открывающем документе не будет ссылки на него, а свойство window.opener
нового окна будет иметь значение null
. Это позволяет иметь больший контроль над ссылками на окно, чем rel=noopener
, который влияет только на исходящую навигацию.
Response.data
:Свойство Response.data
представляет собой дескриптор, вызывающий Response.get_data()
и Response.set_data()
.
Response.date
:Атрибут Response.date
- это заголовок ответа Date
в формате datetime.datetime
, представляет дату и время, когда было отправлено сообщение, и имеет ту же семантику, что и исходная дата в RFC 822.
Изменено в версии 2.0: объект datetime.datetime
учитывает часовой пояс.
Response.delete_cookie(key, path='/', domain=None, secure=False, httponly=False, samesite=None)
:Метод Response.delete_cookie()
удаляет файл cookie
. Если ключа не существует - исключение не поднимается (происходит тихий сбой).
Принимаемые аргументы метода:
key
: ключ (имя) файла cookie
, подлежащего удалению.path
: путь, которым был ограничен файл cookie
.domain
: домен, которым был ограничен файл cookie
.secure
: если True
, то файл cookie
будет доступен только по протоколу HTTPS..httponly
: если True
, то запретит доступ JavaScript к файлу cookie
.samesite
: ограничивает область действия cookie
только прикреплением к запросам, относящимся к тому же сайту.Response.direct_passthrough
:Атрибут Response.direct_passthrough
передает тело ответа напрямую как итерацию WSGI.
Атрибут можно использовать, когда необходимо пропустить некоторые ненужные проверки, а тело ответа представляет собой двоичный файл или другой итератор байтов.
Чтобы НЕ устанавливать значение вручную, необходимо использовать функцию werkzeug.utils.send_file()
.
Response.expires
:Атрибут Response.expires
представляет собой заголовок ответа Expires
в формате datetime.datetime
. В нем указывается дата/время, после которых, ответ считается устаревшим. Устаревшая запись кэша обычно не может быть возвращена.
Изменено в версии 2.0: объект datetime.datetime
учитывает часовой пояс.
Response.force_type(response, environ=None)
:Метод класса Response.force_type()
обеспечивает, чтобы ответ WSGI был объектом ответа текущего типа. Werkzeug будет использовать Response
внутренне во многих ситуациях, таких как исключения. Если для исключения вызывается get_response()
, то вернетесь к обычному объекту Response
, если даже используется собственный подкласс.
Этот метод может принудительно применять данный тип ответа, а также преобразует произвольные вызываемые объекты WSGI в объекты ответа, если предоставляется окружение:
# преобразовывает объект ответа Werkzeug в экземпляр подкласса `MyResponseClass`. response = MyResponseClass.force_type(response) # преобразовывает любое приложение WSGI в объект ответа response = MyResponseClass.force_type(response, environ)
Это особенно полезно, если необходимо обрабатывать ответы в главном диспетчере и использовать функции, предоставляемые собственным подклассом.
Имейте в виду, что это изменит объекты ответа, если это возможно!
Принимаемые аргументы:
response
: объект ответа Response
или приложение WSGI.environ
: Объект среды WSGI (WSGIEnvironment
).Response.freeze(no_etag=None)
:Метод Response.freeze()
делает объект ответа готовым к процессу pickled
. Метод ничего не возвращает.
Изменено в версии 2.0: добавляется заголовок Etag
, аргумент no_etag
устарел и будет удален в Werkzeug 2.1.
Response.from_app(app, environ, buffered=False)
:Метод класса Response.from_app()
создает новый объект ответа из выходных данных приложения. Метод класса работает лучше всего, если передать ему приложение, которое все время возвращает генератор.
Иногда приложения могут использовать вызываемую функцию write()
, возвращаемую функцией start_response
. Это поведение пытается автоматически разрешить такие крайние случаи. Но если на выходе получается ожидаемый результат, то следует установить аргумент buffered=True
, что обеспечит буферизацию.
Принимаемые аргументы:
app
: приложение WSGI для выполнения (WSGIApplication
). environ
: среда выполнения WSGI (WSGIEnvironment
).buffered
: значение True
для принудительной буферизации.Response.get_app_iter(environ)
:Метод Response.get_app_iter()
возвращает итератор приложения для данной среды environ
. В зависимости от HTTP-метода запроса и текущего кода состояния, возвращаемое значение может быть пустым ответом.
Если метод запроса HEAD
или код состояния находится в диапазоне, в котором спецификация HTTP требует пустого ответа, возвращается пустая итерация.
Принимаемые аргументы:
environ
: WSGI среда запроса (WSGIEnvironment
).Response.get_data(as_text=False)
:Метод Response.get_data()
строковое представление тела ответа. Всегда, когда вызывается этот метод, повторяющийся ответ кодируется и выравнивается. Это может привести к нежелательному поведению при потоковой передаче больших данных.
Такое поведение можно отключить, установив значение Response.implicit_sequence_conversion=False
.
Если значение as_text=True
, то возвращаемое значение будет представлять собой декодированную строку.
Response.get_etag()
:Метод Response.get_etag()
возвращает кортеж в виде (Etag, is_weak)
. Если Etag
отсутствует, то возвращаемое значение будет (None, None)
.
Response.get_json(force=False, silent=False)
:Метод Response.get_json()
содержит проанализированные данные JSON. Полезно во время тестирования.
Если mimetype
НЕ указывает на JSON (application/json
, смотрите Response.is_json()
), то метод ничего не возвращает.
В отличие от метода объекта запроса Request.get_json()
, результат не кэшируется.
Принимаемые аргументы:
force
: (bool) – Если True
, то значение mimetype
игнорируется и всегда пытается анализировать JSON.silent
: (bool) – Если True
, то отключит появление ошибок при синтаксическом анализе.Response.get_wsgi_headers(environ)
:Метод Response.get_wsgi_headers()
автоматически вызывается непосредственно перед началом ответа и возвращает заголовки, измененные для данной среды environ
. Метод возвращает копию заголовков из ответа с некоторыми изменениями, применяемыми при необходимости.
Например, заголовок Location
(если он есть) соединен с корневым URL-адресом среды environ
. Кроме того здесь, для определенных кодов состояния, длина содержимого автоматически устанавливается равной нулю.
Принимаемые аргументы:
environ
: среда запроса WSGI (WSGIEnvironment
).Response.get_wsgi_response(environ)
:Метод Response.get_wsgi_response()
возвращает окончательный ответ WSGI в виде кортежа.
Первым элементом в кортеже является итератор приложения, вторым - статус, а третьим - список заголовков. Возвращаемый ответ создается специально для данной среды environ
. Например, если HTTP-метод запроса в среде WSGI является 'HEAD'
, то ответ будет пустым, и будут присутствовать только заголовки и код состояния.
Принимаемые аргументы:
environ
: среда запроса WSGI (WSGIEnvironment
).Response.is_json: bool
:Свойство Response.is_json
проверяет, указывает ли тип mimetype
на данные JSON, либо application/json
, либо application/*+json
.
Response.is_sequence: bool
:Свойство Response.is_sequence
будет True
, если итератор буферизован. Объект ответа будет считать итератор буферизованным, если атрибутом ответа является список или кортеж.
Response.is_streamed: bool
:Свойство Response.is_streamed
будет True
, если ответ передается потоком (т.е. ответ не является итератором, с информацией о длине). В этом случае потоковая передача означает, что нет информации о количестве итераций. Это свойство обычно возвращает True
, если генератор передается объекту ответа.
Свойство полезно для проверки перед применением какой-либо фильтрации сообщений, которая не должна выполняться для потоковых ответов.
Response.iter_encoded()
:Метод Response.iter_encoded()
возвращает итератор ответа, закодированный с помощью кодировки ответа. Если объект ответа вызывается как приложение WSGI, то возвращаемое значение этого метода используется в качестве итератора приложения, если только не был активирован Response.direct_passthrough
.
Response.json
:Свойство Response.json
содержит проанализированные данные JSON, если тип mimetype
указывает на JSON (application/json
, смотрите Response.is_json()
).
Это свойство вызывает Response.get_json()
с аргументами по умолчанию.
Response.last_modified
:Атрибут Response.last_modified
представляет собой заголовок ответа Last-Modified
с последним изменением документа в формате datetime.datetime
.
Этот HTTP-заголовок ответа содержит дату и время, когда ресурс был изменен в последний раз. Он используется в качестве средства проверки, является ли полученный или сохраненный ресурс одним и тем же. это запасной механизм и менее точный, чем заголовок ETag
. Его значение используют условные запросы, содержащие заголовки If-Modified-Since
или If-Unmodified-Since
.
Изменено в версии 2.0: Объект datetime.datetime
зависит от часового пояса.
Response.location
:Атрибут Response.location
представляет собой заголовок ответа Location
. Заголовок используется для перенаправления получателя в местоположение, отличное от URI запроса, для завершения запроса или идентификации нового ресурса.
Response.make_conditional(request_or_environ, accept_ranges=False, complete_length=None)
:Метод Response.make_conditional()
делает ответ на запрос условным. Этот метод работает лучше всего, если для ответа уже был определен ETag
. Для добавления ETag
можно использовать метод Response.add_etag()
. Если вызывается без ETag
, то устанавливается только заголовок Date
.
Response.make_conditional()
работает только для HTTP-методов в запросе Request
или в среде WSGIEnvironment
является GET
или HEAD
.
Для оптимальной производительности при обработке запросов диапазона рекомендуется, чтобы объект данных ответа реализовывал методы, seek
и tell
, как описано в io.IOBase
. Объекты, возвращаемые функцией wrap_file()
, автоматически реализуют эти методы.
Метод не удаляет тело ответа, т.к. это то, что делает магический метод __call__()
автоматически.
Возвращает себя, чтобы можно было выполнить return resp.make_conditional(req)
, но изменяет объект на месте.
Если заголовок диапазона не может быть проанализирован или удовлетворен поднимает исключение RequestedRangeNotSatisfiable
.
Принимаемые аргументы:
request_or_environ
: объект запроса или среда WSGI (WSGIEnvironment
), которые будут использоваться для создания условий для ответа.accept_ranges
: определяет значение заголовка Accept-Ranges
. Если значение False
(по умолчанию), то заголовок не задан. Если значение True
, оно будет установлено в 'bytes'
. Если None
, то будет установлено значение 'none'
. Если значение является строкой, то метод будет использовать это значение.complete_length
: будет использоваться только в допустимых запросах с заголовком Range
. Он устанавливает значение полной длины Content-Range
и вычисляет реальное значение Content-Length
. Этот аргумент является обязательным для успешного выполнения запросов с заголовком Range
.Изменено в версии 2.0: Обработка Range
пропускается, если длина равна 0, и НЕ вызывает ошибку 416 Range Not Satisfiable
.
Response.make_sequence()
:Метод Response.make_sequence()
преобразует итерируемый ответ в список. По умолчанию это происходит автоматически.
Если функция Response.implicit_sequence_conversion=False
отключена, то этот метод не вызывается автоматически, и некоторые свойства могут вызывать исключения. Метод также кодирует все элементы.
Response.max_cookie_size: int
:Свойство Response.max_cookie_size
предоставляет доступ, только для чтения, к ключу конфигурации MAX_COOKIE_SIZE
.
Response.mimetype: Optional[str]
:Свойство Response.mimetype
значение mimetype
(тип содержимого без кодировки и т.д.).
Response.mimetype_params: Dict[str, str]
:Свойство Response.mimetype_params
содержит словарь с параметрами mimetype
. Например, если тип содержимого text/html; charset=utf-8
, то результатом будет {'charset': 'utf-8'}
.
Response.retry_after
:Свойство Response.retry_after
представляет собой заголовок ответа Retry-After
в формате datetime.datetime
Этот заголовок HTTP-ответа показывает, как долго клиент должен подождать перед последующим запросом. Есть три основных случая, в которых следует использовать этот заголовок:
Retry-After
отправляется с кодом 503 (Service Unavailable), отображая примерное время, через которое сервис будет доступен.Retry-After
отправляется с кодом 429 (Too Many Requests), отображая, сколько ждать перед следующим запросом.Retry-After
отправляется с кодом переадресации (например, 301 (Moved Permanently)), отображает минимальное время, которое клиент должен подождать перед переадресацией.Изменено в версии 2.0: Объект datetime.datetime
зависит от часового пояса.
Response.set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=False, httponly=False, samesite=None)
:Метод Response.set_cookie()
устанавливает файл cookie
.
Выдается предупреждение, если размер заголовка файла cookie
превышает max_cookie_size
, но заголовок все равно будет установлен.
Принимаемые аргументы:
key
: строка, ключ/имя устанавливаемого файла cookie
.value
: строка, значение куки.max_age
: время жизни cookie
, указывается в секундах. По умолчанию None
, это означает что cookie
уничтожиться, после окончания сеанса браузера. Может быть int
или datetime.timedelta()
.expires
: должен быть объектом datetime.datetime()
или метка времени UNIX, обозначенная как int
или float
. path
: строка, которая ограничивает cookie
заданным путем, по умолчанию он будет охватывать весь домен.domain
: строка, которая устанавливает междоменный файл cookie
. Например, domain='.example.com'
установит cookie
, доступный для чтения доменам www.example.com
, foo.example.com
и т. д. В противном случае cookie
будет доступен для чтения только домену, который его установил.secure
: если True
, то cookie
будет доступен только через HTTPS.httponly
: если True
, то запретить доступ JavaScript к файлу cookie
.samesite
: строка, которая ограничивает действие cookie
. Другими словами, cookie
передаются только запросам, которые относятся к "samesite".Response.set_data(value)
:Метод Response.set_data()
задает новое тело в качестве ответа сервера, в виде строки. Значение должно быть строкой или байтовой строкой. Если тело задано в виде строки str
, то она кодируется в кодировке ответа (по умолчанию utf-8
).
Response.set_etag(etag, weak=False)
:Метод Response.set_etag()
устанавливает заголовок ETag
или переопределяет старый, если он был.
Дополнительно смотрите метод Response.add_etag
.
Response.status: str
:СвойствоResponse.status
содержит код состояния HTTP в виде строки.
Response.status_code: int
:Свойство Response.status_code
содержит код состояния HTTP в виде целого числа.
Response.stream
:Свойство Response.stream
содержит ответ, в качестве потока werkzeug.wrappers.response.ResponseStream
только для записи.
Response.vary
:Свойство Response.vary
представляет собой заголовок ответа Vary
в виде объекта werkzeug.datastructures.HeaderSet
.
Заголовок Vary
должен быть установлен для ответа 304 Not Modified
точно так же, как он был бы установлен для эквивалентного ответа 200 OK
.
Этот заголовок определяет, как сопоставить будущие заголовки запроса, для принятия решения о том, можно ли использовать кешированный ответ, а не запрашивать новый с исходного сервера. Он используется сервером для указания того, какие заголовки он использовал при выборе представления ресурса в алгоритме согласования контента.
Свойство Response.vary
ведет себя как Response.allow
.
Response.www_authenticate
:Свойство Response.www_authenticate
содержит значение заголовка WWW-Authenticate
в разобранной форме, в виде объекта werkzeug.datastructures.WWWAuthenticate
.