200 OK
Применение
Ответ 200 OK всегда содержит тело сообщения, хотя сервер вправе установить нулевую длину тела. В зависимости от сервера это ожидаемо при обработке запросов PUT, DELETE или OPTIONS.
Когда серверу нечего возвращать, уместнее код состояния 204. Для запросов, создающих новый ресурс, например POST, создающего содержимое, вместо этого возвращается код состояния 201.
Влияние на SEO
Ответ 200 передаёт содержимое в конвейер индексирования Google, но индексирование не гарантируется. Google оценивает содержимое и самостоятельно решает, включать ли страницу в результаты поиска. Ответ 200 на странице, которая сообщает, что содержимое отсутствует или удалено, создаёт мягкий 404. Слишком большое количество мягких 404 подрывает доверие Google к серверным сигналам сайта и негативно сказывается на ранжировании.
Примечание
Инструменты разработчика браузера показывают “200 (from disk cache)” или “200 (from memory cache)”, когда ответ отдаётся из локального кэша без сетевого запроса. Это отличается и от 200, отправленного сервером (полный сетевой обмен), и от 304 (сервер подтвердил актуальность кэша). “200 from cache” означает, что max-age из Cache-Control ещё не истёк, тогда как 304 означает, что браузер выполнил повторную валидацию на сервере.
GET
Ответ на GET содержит тело сообщения запрошенного ресурса.
Запрос
GET /document.pdf HTTP/1.1
Host: example.com
Ответ
HTTP/1.1 200 OK
Content-Type: application/pdf
Content-Length: 10000
<message body contains the requested PDF document>
HEAD
Ответ на HEAD содержит те же заголовки, что и ответ на GET, но без тела сообщения.
Запрос
HEAD / HTTP/1.1
Host: example.com
Ответ
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
POST
Ответ на POST обычно содержит информацию о результате действия или о состоянии выполнения.
Запрос
POST /api/data HTTP/1.1
Host: example.com
Content-Type: application/json
Content-Length: 24
{"name":"example entry"}
Ответ
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 18
{"success":"true"}
PUT
Ответ на PUT обычно содержит информацию о результате действия или о состоянии выполнения.
Запрос
PUT /api/data/1 HTTP/1.1
Host: example.com
Content-Type: application/json
Content-Length: 24
{"name":"updated entry"}
Ответ
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 18
{"success":"true"}
TRACE
Ответ на TRACE содержит сообщение запроса в том виде, в каком сервер его получил.
Запрос
TRACE / HTTP/1.1
Host: example.com
Ответ
HTTP/1.1 200 OK
Content-Type: message/http
Content-Length: 38
TRACE / HTTP/1.1
Host: example.com
DELETE
Ответ на DELETE содержит указание на состояние завершённого действия.
Запрос
DELETE /api/data/1 HTTP/1.1
Host: example.com
Ответ
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 18
{"deleted":"true"}
OPTIONS
Ответ на OPTIONS содержит заголовок Allow, перечисляющий HTTP-методы, которые принимает сервер. При необходимости сервер указывает дополнительные подробности в теле сообщения.
Запрос
OPTIONS / HTTP/1.1
Host: example.com
Ответ
HTTP/1.1 200 OK
Allow: GET,HEAD,PUT,OPTIONS
Content-Type: text/plain;charset=UTF-8
Примеры кода
.NET
HttpStatusCode.OK
Rust
http::StatusCode::OK
Rails
:ok
Go
http.StatusOK
Symfony
Response::HTTP_OK
Python3.5+
http.HTTPStatus.OK
Java
java.net.HttpURLConnection.HTTP_OK
Apache HttpComponents Core
org.apache.hc.core5.http.HttpStatus.SC_OK
Angular
@angular/common/http/HttpStatusCode.Ok