是否可以使用任何HTTP标头或元标记来避免将URL添加到浏览器历史记录中?
例如,我不想要
http://domain.td/show/super-secret-unique-token-that-is-private
当我开始输入“domain.t”时,显示在浏览器URL栏中。
目前我在网站上有一个(POST)搜索表单来加载令牌,但它们没有出现。但是后来我想通过链接加载令牌,比如让我们说一张专辑。
答案 0 :(得分:2)
我认为你不能。
您可以将令牌保存为cookie,或将其用作GET参数,但每15分钟左右使其过期(并在每次加载页面时重新生成一个新的)。还要检查相同的用户代理,如果你想沿着IP路走IP地址(但是它可以给出误报,我不推荐它)。
答案 1 :(得分:0)
决定使用我在浏览器会话中保存的地图。通过这种方式,我可以将令牌密钥传递给URL,然后将变量返回。
我写了一个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;
}
}