【发布时间】:2018-07-18 17:58:53
【问题描述】:
我正在尝试从我的网络服务器向浏览器发送一个自定义响应标头,并在屏幕上打印其原因短语。不幸的是,这并没有发生。
我的目标是设置一个错误处理程序(此处为:errorHandler),以便在引发错误的所有情况下向用户显示用户友好的消息。所以,不仅是“正常”的 HTTP 请求,即使对服务器的请求是 ajax 请求。
在 ajax 请求的情况下,通过这样做,如果发生错误,我已经可以触发相应的 ajax“错误”回调并在其中打印标头的 原因短语 .但在“正常”请求的情况下,如下所示,这是行不通的。例如。屏幕上没有打印任何消息。
您能告诉我,为什么不,以及如何解决这个问题?
谢谢。
handlers.php:
ini_set('log_errors', 1);
error_reporting(E_ALL);
ini_set('display_errors', 0);
set_error_handler('errorHandler');
function errorHandler($errno, $errstr, $errfile, $errline) {
header('HTTP/1.1 420 An error occurred during your request. Please try again, or contact us.');
error_log('Error ' . $errno . ' - ' . $errstr . ' in file ' . $errfile . ' on line ' . $errline);
exit();
}
index.php:
<?php
require 'handlers.php';
// Because the function test() doesn't exist, an error is thrown.
// But I see no message on screen.
$tmnlid = test();
【问题讨论】:
标签: php ajax error-handling http-headers httpresponse