4

是否有任何 HTTP 标头或元标记可以用来避免将 URL 放入浏览器历史记录?

例如,我不想

http://domain.td/show/super-secret-unique-token-that-is-private

当我开始输入“domain.t”时显示在浏览器的 URL 栏中。

目前我在网站上有一个(POST)搜索表单来加载令牌,但它们没有出现。但后来我想通过链接加载令牌,比如专辑。

4

2 回答 2

2

我不认为你可以。

您可以将令牌保存为 cookie,或将其用作 GET 参数,但使其每 15 分钟左右过期(并在每次页面加载时重新生成一个新的)。还要检查相同的用户代理,如果你想沿着 IP 路走,IP 地址(但是它会给出误报,我不推荐它)。

于 2010-07-05T10:25:12.980 回答
0

决定使用我保存在浏览器会话中的地图。这样我就可以通过 URL 传递 tokenKey 并在之后取回变量。

我编写了这个 Zend_Session_Namespace 的小扩展类并添加了“add”和“get”函数。

<?php

class My_Session_Tokens extends Zend_Session_Namespace {

    protected $_namespace = "Tokens";

    public function __construct($namespace = 'Tokens', $singleInstance = false)
    {
        parent::__construct($namespace, $singleInstance);
    }

    public function add($token) {
        if($tokenKey = $this->hasToken($token)) {
            return $tokenKey;
        }

        do { $tokenKey = uniqid(); } while(isset($this->$tokenKey));

        $this->$tokenKey = $token;
        return $tokenKey;
    }

    public function get($tokenKey) {
        if(isset($tokenKey)) {
            return $this->$tokenKey;
        }
        return null;
    }

    public function hasToken($token) {
        foreach($this as $key => $val) {
            if($val === $token) return $key;
        }
        return false;
    }
}
于 2010-07-05T12:45:08.757 回答