Мое пользовательское сообщение об ошибке HTTP перезаписывается в php - PullRequest
0 голосов
/ 18 января 2012

Итак, я использую cakephp и использую ajax для отправки форм.В некоторых случаях он возвращает пользовательскую ошибку.

Например, в какой-то момент она может выглядеть следующим образом:

Failed to load resource: the server responded with a status of 412 
([{"field":"PaymentCardholderName","message":"Please enter CardHolder's Name."},
{"field":"PaymentCardNumber","message":"Please enter Card Number."},
{"field":"PaymentCvvNumber","message":"Please enter CVV Number."},
{"field":"PaymentBillingAddress","message":"Please enter your Billing Address"}])

Вот логика сервера на случай, если кому-то понадобится

header('HTTP/1.1 412 ' . json_encode($error));

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

Failed to load resource: the server responded with a status of 412 
(Precondition Failed)

Это должна быть какая-то конфигурация, но я не могу ее найти.

1 Ответ

1 голос
/ 18 января 2012

Дополнительно вместо предположения HTTP/1.1

Сделайте это:

header($_SERVER["SERVER_PROTOCOL"]." 412 Precondition Failed");

Вместо этого:

header("HTTP/1.1 412 Precondition Failed");
header("HTTP/1.0 412 Precondition Failed");

Почему? Потому что $_SERVER["SERVER_PROTOCOL"] дает вам либо HTTP/1.1, либо HTTP/1.0 в зависимости от вашего браузера. Если вы используете неправильный, apache может добавить неожиданный контент в ответ. например. 4-значный шестнадцатеричный код в начале (контрольная сумма?) и завершающий ноль.

...