如何找到使XMLHttpRequest的页面的文件名? - javascript

我有一个页面,使XMLHttpRequest成为php文件。在此php文件中,我需要发出请求的页面的文件名。

                           XMLHttpRequest
variable-page-name.html -------------------> request-processor.php
                                        (needs 'variable-page-name.html')

编辑:我有一个要求:我不能在发出请求的页面上使用php。文件名必须在请求页面上的javascript中或在processor.php中获得

到目前为止,我一直在使用php文件中的$_SERVER['HTTP_REFERER']。我意识到javascript还可以传递包含文件名的变量。让我重复一遍,我不能在请求页面上使用php。

它是非常简单的CMS的一部分,该CMS仅通过javascript生成更改请求。

我对您的想法感兴趣:

如何获取文件名?
是否可以从“不可伪造”源获取文件名? (HTTP_REFERER基于标题,如果我没有记错的话,该标题可以由用户修改。)
否则,最好依靠javascript或php吗?
关于安全性问题,您也许对如何验证此文件名变量有建议?

参考方案

是否可以从“不可伪造”源获取文件名?

某种程度上,您不能信任客户端的任何内容,但是可以生成一次性密钥并将其用作文件名

  最好依靠javascript或php吗?

您将需要同时使用两者,默认情况下,JavaScript不会发送比引荐来源更多的内容,但这并不意味着您无法向请求添加自定义标头或查询

  关于安全性问题,您也许对如何验证此文件名变量有建议?我如何限制可能造成的损害?限制目录的可访问性。

要求客户端已登录;使页面在其他任何事情发生之前死亡
发送一次性密钥,以便一旦使用了密钥,就必须刷新页面(或需要进行ajax调用)以获取新密钥
速率限制页面可以被称为宠物客户端的频率,通过查看时间完全在服务器端完成
将上传目录设置为403 Forbidden,并通过另一个读取文件内容的脚本对它进行所有请求(即,确保服务器不执行上传的文件)

这是我正在玩的东西,因为stackoverflow处于只读模式,尽管您可能想要使用一种完全不同的方法

var xhr = new XMLHttpRequest();
xhr.open(method, url); // e.g. "POST", "/upload.php"
xhr.setRequestHeader('one-time-key', keyForThisRequest);
xhr.send(data); // e.g. a FormData instance

然后例如(取决于php版本等)

if (isset($_SESSION["is_admin"])) {
    $headers = apache_request_headers();
    if (isset($_SESSION["one-time-key"]) && $headers["one-time-key"] == $_SESSION["one-time-key"]) {
        // etc
    } else {
        die();
    }
}

PHP Javascript更改浏览器后退按钮行为Laravel - javascript

我知道有各种各样的线程要求几乎相同的要求,但似乎没有一个真正满足我的需求。在我的网站上,我实现了搜索表单。一个简单的表单,其中包含一个名为searchQuery的输入字段和一个提交按钮。表单通过POST方法发送。我正在使用Laravel btw。。然后将搜索结果从控制器加载到视图中。这些在表中显示。现在来了有趣的部分:找到的元素是可单击的,并且您进入有关该元…

Javascript-从当前网址中删除查询字符串 - javascript

单击提交按钮后,我需要从网址中删除查询字符串值。我可以用jQuery做到这一点吗?当前网址:siteUrl/page.php?key=value 页面提交后:siteUrl/page.php 实际上,我已经从另一个带有查询字符串的页面着陆到当前页面。我需要在页面首次加载时查询字符串值以预填充一些详细信息。但是,一旦我提交了表格,我就需要删除查询字符串值。我已…

Javascript-Python:将动态生成的图像提供给客户端浏览器? - php

场景:用户加载页面,正在生成图像,显示加载栏,通知事件已发送到浏览器。我正在使用python代码生成图像。拥有启动脚本或将Web服务器代码嵌入python脚本的Web服务器是否理想?图像完成渲染后,客户端应收到一条消息,说明图像成功并显示图像。如何设计它以同时支持并发用户?是否只需为每个导航到该网页的新用户启动python脚本就足够了?在这种情况下拥有实时W…

javascript popupwindow之后的行如何工作? - javascript

好的,我有一个来自后面代码的方法,可以创建一个popupwindow。然后有一行代码要在那之后执行,我想知道那行代码何时执行,是在使用popupwindow之后执行还是在创建popupwindow之后执行?例如:void exPopupWindowMethod() { string scr = "window.open('exampleP…

PHP json_encode数组到javascript关联数组 - javascript

我有一些从PHP中读取的mysqli列。它正在完美地获取和回显。$results = mysqli_fetch_assoc(mysqli_query($conn, $querystring)); echo json_encode($results); //$results = {"title":"Sea Shells"…