Заголовок HTTP «Accept-Language»: должны ли серверы использовать его строго или только как предпочтение?

Интересно, как серверы должны использовать HTTP-заголовок "Accept Language", если у сервера есть запрошенный ресурс, но не на указанном языке. Должен ли сервер возвращать ошибку любого рода (404 или «ресурс не найден» и т. д.) или успех, но ресурс на доступном языке?

Упоминается или рекомендует ли спецификация HTTP использование в этом случае?
Я прочитал " RFC2616 - 14.4 Accept-Language", но мне это было не очень понятно.

Я знаю, что быстрым решением было бы добавить Accept Language: * в заголовок, но я хочу узнать, что здесь, и попытаться решить это с правильной стороны (возможно, на сервере или, может быть, на клиенте).

Любая помощь приветствуется.


person nacho4d    schedule 05.04.2015    source источник


Ответы (1)


Прежде всего, RFC 2616 устарел, и вместо него следует обращаться к RFC 7230–7235.

В RFC 7231 — 5.3.5. Accept-Language вы можете прочитать:

Если поле заголовка присутствует в запросе и ни одно из доступных представлений для ответа не имеет соответствующего языкового тега, исходный сервер может либо проигнорировать поле заголовка, обработав ответ так, как будто он не подлежит согласованию содержимого, либо принять заголовок. поле, отправив ответ 406 (неприемлемо). Однако последнее не рекомендуется, так как это может помешать пользователям получить доступ к контенту, который они могли бы использовать (например, с программным обеспечением для перевода).

Поэтому либо игнорируйте заголовок, либо отвечайте на языке по умолчанию. Или ответить на запрос как неприемлемый, что не поощряется авторами. Однако вы можете использовать ответ 406, чтобы предоставить список доступных языковых представлений.

person Gumbo    schedule 05.04.2015