-1

有没有办法阻止对 .php 文件的外部访问(如在 URL 中)并允许 .php 文件是否被 jquery post 调用?

谢谢!沃特0100

4

3 回答 3

2

我假设是因为您说like in the URL要阻止GET请求。

您可以将它放在脚本的顶部,以防止人们通过 URL 访问它。然后,您将只能使用POST它,例如 jQuery POST。

<?PHP
if($_SERVER['REQUEST_METHOD']!="POST")
    header('HTTP/1.0 401 Unauthorized');
    exit;
?>

请注意,其他来源也可以POST使用该表格。此方法仅阻止通过GET请求等其他方法访问。即在地址栏中输入 URL。

于 2012-09-03T10:50:43.150 回答
1

更简单的方法是使用 jquery 发送一个标头,稍后您可以使用 PHP 读取该标头。这绝不是一种真正的保护,但它确实可以防止用户在没有首先检查它应该发送的标头的情况下发送请求。

例如,在您的 jquery 调用中:

$.ajax({
    url: url,
    beforeSend: function(xhr) {
        xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
    },
    success: function(data) {
    }
});

在你的 PHP 中:

if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {
    header("HTTP/1.0 405 Method Not Allowed");
    exit();
}
于 2012-09-03T11:26:07.300 回答
1

正如已经向您提到的,允许.php使用 jquery post 访问 a 等同于提供外部访问。允许 jquery post 访问 php 文件的唯一方法(这不是很可靠)是检查$_SERVER['HTTP_REFERER']PHP 代码中的变量是否与发送 jquery post 的 URL 相同。

于 2012-09-03T10:52:52.807 回答