确定HTML是否破坏了文件链接请求

时间:2015-12-23 00:48:02

标签: php html apache http

我开发了一个PHP应用程序,我用apache创建了一个路由系统 使用此路由系统,每个http请求都指向index.php,除非请求是服务器上的实际文件。

我的问题是,如果文件不存在,每次文件请求发出404错误时都会执行我的整个应用程序,导致我的应用程序变得非常慢。

我试图听$_SERVER看看我是否发现了一些数据,这些数据表明执行是由一个损坏的文件链接完成的,如果我发现了什么,我会执行{{1} 1}}函数所以没有加载应用程序。

我在die()上找不到任何内容,也没有在下面的任何功能中找到任何内容:

$_SERVER

最初我正在使用下面的脚本,但后来发现如果有人在请求结束时放了一个像getallheaders(); headers_list(); headers_sent(); http_response_code(); 这样的字符串,整个应用程序就会关闭。

somestring.test

我该怎么做才能确定http请求是破坏的文件请求还是正常的请求?

1 个答案:

答案 0 :(得分:1)

我设法通过听取函数Accept给出的字段getallheaders()来解决我的问题:

if(FULL_URL !== rtrim(PROTOCOL.'://'.$_SERVER['HTTP_HOST']).'/'){
    // Get path extension
    $ext = pathinfo(FULL_URL, PATHINFO_EXTENSION);

    if($ext !== ''){

        $contenttype = isset(getallheaders()['Accept']) ? getallheaders()['Accept'] : NULL;

        if(empty($contenttype) || strpos($contenttype, 'text/html') === FALSE){
            die;
        }

    }
}