Javascript 在PHP中检测AJAX请求来自哪个文件
我正在开发一个小型应用程序,它有许多AJAX请求,特别是对一个文件 收到请求后,我希望PHP操作文件记录请求的来源,并做出进一步的决定。在PHP操作文件中,我尝试使用Javascript 在PHP中检测AJAX请求来自哪个文件,javascript,php,ajax,Javascript,Php,Ajax,我正在开发一个小型应用程序,它有许多AJAX请求,特别是对一个文件 收到请求后,我希望PHP操作文件记录请求的来源,并做出进一步的决定。在PHP操作文件中,我尝试使用$\u SERVER['REQUEST\u URI']确定AJAX提交的位置,但是这会返回PHP操作文件的位置 是否有任何方法可以使用HTTP、$\u POST等来实现这一点,而无需手动将另一个变量附加到每个表单中的POST对象 寻找类似于: $origin = $_POST['origin']; echo $origin; //
$\u SERVER['REQUEST\u URI']
确定AJAX提交的位置,但是这会返回PHP操作文件的位置
是否有任何方法可以使用HTTP
、$\u POST
等来实现这一点,而无需手动将另一个变量附加到每个表单中的POST
对象
寻找类似于:
$origin = $_POST['origin'];
echo $origin; // returns either 'form-submit.js' or '/path/form-page.php'
在不向Ajax请求添加其他参数的情况下,最接近您要查找的内容是在PHP中使用
$\u SERVER['HTTP\u REFERER']
来获取REFERER
标题的值,该标题表示用户来自哪个页面
当然,这个值不能被信任,也不能保证它会存在(有些可能会禁用它)或在一般情况下被依赖
您最好在请求中添加另一个参数,但这当然也可以在客户端进行修改。文件是指javascript文件还是url?
$\u SERVER['REMOTE\u ADDR']
是否为您提供了所需的内容?如果您控制发出请求的页面,您可以修改AJAX请求以发送源文件以及它发送的任何其他文件。@不要担心,这个问题的目的是不必这样做。见第二段。这可能是个坏主意。基于请求来自何处而具有神奇的行为令人困惑,难以维护。如果你想让一个端点在不同的条件下表现出不同的行为,那么让客户端明确地要求差异。这实际上非常有效!但是,正如上面的评论和您的回答中描述的不可信,这个值不可靠或被篡改的具体原因是什么?它不可靠是因为它是由客户端(浏览器)发送的,所以他们可以很容易地将它处理成其他东西,或者使用插件完全禁用它。因此,不要依赖于它的存在,如果它是存在的,它可能并不代表实际的引用者,尽管在大多数情况下,它是好的。要知道这很容易操纵。