Не сохранять URL в истории, заголовки или метатеги? - PullRequest
4 голосов
/ 05 июля 2010

Существуют ли какие-либо HTTP-заголовки или мета-теги, которые можно использовать, чтобы избежать попадания URL в историю браузера?

Например, я не хочу

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

дляпоявляются в строке URL браузера, когда я начинаю набирать «domain.t».

В настоящее время у меня есть (POST) форма поиска на веб-сайте для загрузки токенов, и они не отображаются.Но позже я хочу загрузить токены по ссылкам, скажем, из альбома.

Ответы [ 2 ]

2 голосов
/ 05 июля 2010

Не думаю, что ты можешь.

Вы можете сохранить токен как файл cookie или использовать его в качестве параметра GET, но срок его действия истекает каждые 15 минут или около того (и восстанавливать новый при каждой загрузке страницы). Также проверьте того же агента пользователя, и если вы хотите пойти по IP-адресу, IP-адресу (однако он может давать ложные срабатывания, я бы не рекомендовал его).

0 голосов
/ 05 июля 2010

Решили использовать карту, которую я сохраняю в сеансе браузера.Таким образом, я могу передать tokenKey через 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;
    }
}
...