所以我使用cakepp和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)
它一定是一些配置,但我找不到。
此外,不假定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位十六进制代码(校验和?),以及后面的零。