今天有童鞋來問,在網站的后臺如何獲取ajax請求來源的頁面地址,并根據來源地址的不同做一些簡單邏輯判斷。那么針對這個問題,寫篇博文,做一下回答。

PHP $_SERVER['HTTP_REFERER'] 

$_SERVER['HTTP_REFERER']:可以獲取鏈接到當前頁面的前一頁面的地址:

例如:

A頁面的地址為:http://xswdd.cn/post/1.html

B頁面的地址為:http://xswdd.cn/post/2.html

如果在A頁面中,點擊B頁面的鏈接。那么對于B頁面來說,A頁面的地址則為當前頁面前一頁的URL地址。

同理,我們在AJAX請求中,也可以使用 $_SERVER['HTTP_REFERER'] 獲取來源頁面的地址。

php獲取ajax請求來源頁面地址的示例

AJAX請求頁的代碼

国产视频app將以下代碼保存為html文件,并以“c.html”命名

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <script src="http://cdn.staticfile.org/jquery/2.2.4/jquery.min.js" type="text/javascript"></script>
    <title>Document</title>
</head>
<body>
    <script>
        $.ajax({
            type: "POST",
            url: "c.php",
            data: {},
            dataType: "json",
            success: function (response) {
                
            },
            error:function(){
                
            }
        });
    </script>
</body>
</html>

php后端被請求頁的代碼

以下代碼保存為PHP文件,并命名為“c.php”,與html頁面中 ajax 請求頁面的名字相同

<?php
echo $_SERVER['HTTP_REFERER'];
?>

国产视频app代碼保存為 c.php

把兩個文件,放到同一目錄中,并在瀏覽器中打開,c.html

返回的結果如下圖:

php獲取ajax請求來源頁面地址的方法

注意:

1、$_SERVER['HTTP_REFERER'] 不能保證在每個瀏覽器下都能獲取到ajax來源地址的url

2、ajax 請求來源的地址很容易被偽造。不能做為后臺程序安全驗證的依據。