Я использую Tomcat 8.5 на одном сервере и Tomcat 7 на другом сервере, и у меня есть следующий ресурс Джерси:
@Path("main")
public class MyResource {
@POST
@Path("path")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public PojoResponse sendMailTemplate(PojoRequest paramsMap) throws Exception {
return service.execute(paramsMap);
}
, который регистрируется в MyApplication
(extends ResourceConfig
) с @ApplicationPath("root")
При отправке запроса с использованием JMeter / Postman (в / root / main / path) я получаю непоследовательные HTTP Фраза причины
Клиент не являетсятребуется изучить или отобразить фразу-причину.
Что не является обязательным для протокола
Приведенные здесь фразы-причины являются только рекомендациями - их МОГУТ заменитьлокальные эквиваленты без влияния на протокол.
Я вижу "действительный" ответ 200 OK от сервера Tomcat 7:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: application/json
Content-Length: 32
и "недопустимый" ответ 200 200 отСервер Tomcat 7 (тот же запрос):
HTTP/1.1 200 200
Server: Apache
Content-Type: application/json
Content-Length: 32
X-Content-Type-Options: nosniff
X-XSS-Protection: 1
Connection: close
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Когда я проверяю Ответ Я не нахожу никаких ссылок на обновление фразы причины, поэтому следует ли игнорировать это несоответствие или его можно исправить?
РЕДАКТИРОВАТЬ
Мои приложениякатион также зарегистрировать JacksonFeature:
register(JacksonFeature.class);
РЕДАКТИРОВАТЬ 2
На самом деле я обнаружил, что у меня есть дополнительная банка во второй среде:
jersey-entity-filtering-2.19
Commonjars:
jersey-client-2.19.jar
jersey-common-2.19.jar
jersey-container-servlet-2.19.jar
jersey-container-servlet-core-2.19.jar
jersey-guava-2.19.jar
jersey-media-jaxb-2.19.jar
jersey-media-json-jackson-2.6.jar
jersey-server-2.19.jar
jersey-spring3-2.6.jar
EDIT 3
Я обнаружил ошибку в Tomcat 8.5, в которой говорится, что фраза была удалена
Кристофер Шульц: Я был удивлен, увидев, что Tomcat активно удаляет причину.Сначала я думал, что это просто Tomcat, удаляющий фразы-причины из каждого ответа, генерируемого Tomcat (например, все, что происходит из DefaultServlet, различные внутренние ошибки и т. Д.), Но он активно удаляет фразы-причины, явно установленные приложениями.
Михаил Осипов: Нет, это не приводит ни слова о причине.Только страница с ошибкой HTML.Я знаю, потому что я переписал ErrorReportValve в последний раз.
РЕДАКТИРОВАТЬ 4
Я нашел соответствующий вопрос но я не сделалt полностью понимают это
Tomcat 8.5 удалил «фразу причины состояния HTTP» из ответа, поэтому вы получите HTTP 200 вместо HTTP 200 OK в ответе.Возможно, ваши наблюдения получены из программного обеспечения, которое дублирует код состояния в фразу причины состояния для отображения.
Как вы наблюдаете код состояния?Вы можете обнаружить, что если вы выполните трассировку протокола, вы увидите, что Tomcat / httpd отправляет только один код состояния.Вы уверены, что «двойной код состояния» на самом деле не является (нормальным) кодом состояния и фразой причины, которая, как оказалось, совпадает с текстом кода состояния?