Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在PHP中检测AJAX请求来自哪个文件_Javascript_Php_Ajax - Fatal编程技术网

Javascript 在PHP中检测AJAX请求来自哪个文件

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; //

我正在开发一个小型应用程序,它有许多AJAX请求,特别是对一个文件

收到请求后,我希望PHP操作文件记录请求的来源,并做出进一步的决定。在PHP操作文件中,我尝试使用
$\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请求以发送源文件以及它发送的任何其他文件。@不要担心,这个问题的目的是不必这样做。见第二段。这可能是个坏主意。基于请求来自何处而具有神奇的行为令人困惑,难以维护。如果你想让一个端点在不同的条件下表现出不同的行为,那么让客户端明确地要求差异。这实际上非常有效!但是,正如上面的评论和您的回答中描述的不可信,这个值不可靠或被篡改的具体原因是什么?它不可靠是因为它是由客户端(浏览器)发送的,所以他们可以很容易地将它处理成其他东西,或者使用插件完全禁用它。因此,不要依赖于它的存在,如果它是存在的,它可能并不代表实际的引用者,尽管在大多数情况下,它是好的。要知道这很容易操纵。