Я обнаружил несоответствие между Java dev_appserver
и живым сервером App Engine.
На моем локальном сервере разработки у меня есть сервлет, который возвращает:
return response.sendError(response.SC_BAD_REQUEST, "Please log in to comment");
Когда я открываю страницу, я возвращаю сообщение с кодом состояния в заголовке, которое:
Status Code:400 Please log in to comment
Проблема возникает, когда я развертываю это в App Engine. При доступе к нему тот же сервлет. Я получаю этот «Плохой запрос» вместо «Пожалуйста, войдите, чтобы оставить комментарий»:
Status Code:400 Bad Request
Пожалуйста, авторизуйтесь, чтобы комментировать
Сообщение с кодом состояния появляется в HTML-содержимом, но не в заголовке делает в среде разработки.
Почему это?
Править
Вот трассировка curl -vvvv
как для dev_appserver, так и для производственной среды:
dev_appserver curl trace:
> POST /add-comment HTTP/1.1
> User-Agent: Mozilla/4.0
> Host: localhost:8080
> Accept: */*
> Content-Length: 9
> Content-Type: application/x-www-form-urlencoded
>
< HTTP/1.1 400 Please log in to comment
< Content-Type: text/html; charset=iso-8859-1
< Cache-Control: must-revalidate,no-cache,no-store
< Content-Length: 1406
< Server: Jetty(6.1.x)
Production curl трассировка:
> POST /add-comment HTTP/1.1
> User-Agent: Mozilla/4.0
> Host: www.xxx.org
> Accept: */*
> Content-Length: 9
> Content-Type: application/x-www-form-urlencoded
>
< HTTP/1.1 400 Bad Request
< Content-Type: text/html; charset=utf-8
< Vary: Accept-Encoding
< Date: Thu, 18 Aug 2011 14:04:26 GMT
< Server: Google Frontend
< Cache-Control: private
< Transfer-Encoding: chunked