Страшный Evercookie и CakePHP - PullRequest
4 голосов
/ 24 марта 2011

Итак, я пытаюсь реализовать evercookie на веб-сайте cakePHP, но я получаю действительно очень странные результаты.Я только что скопировал и вставил файлы кода в мой каталог app / webroot, и я не вижу никаких ошибок 404, но мои файлы cookie не сохраняются - они перезаписываются каждыйи каждый раз.Еще более странно то, что при загрузке страницы она отправляет не менее 90 запросов GET на Google.com и сохраняет 4-5 баз данных SQLite в Google Chrome;веб-сайт evercookie хранит только один .

Мой код на сгенерированной HTML-странице:

var ec = new evercookie();

// set a cookie "id" to a random 10 character string
// usage: ec.set(key, value)
ec.set("id", "vm5m172dyg");


// retrieve a cookie called "id" (simply)
ec.get("id", function(value) { alert("Cookie value is " + value) });



// or use a more advanced callback function for getting our cookie
// the cookie value is the first param
// an object containing the different storage methods
// and returned cookie values is the second parameter

function getCookie(best_candidate, all_candidates)

    {

    alert("The retrieved cookie is: " + best_candidate + "\n" +
        "You can see what each storage mechanism returned " +
        "by looping through the all_candidates object.");

         for (var item in all_candidates){

        document.write("Storage mechanism " + item +
                  " returned: " + all_candidates[item] + "<br>");

     }

}

    ec.get("id", getCookie);



// we look for "candidates" based off the number of "cookies" that
// come back matching since it's possible for mismatching cookies.
// the best candidate is most likely the correct one

Часть этого кода записывается в мой документ, а вотвывод (который мне подходит):

Storage mechanism userData returned: undefined
Storage mechanism cookieData returned: d9g6mfoo4y
Storage mechanism localData returned: d9g6mfoo4y
Storage mechanism globalData returned: undefined
Storage mechanism sessionData returned: d9g6mfoo4y
Storage mechanism windowData returned: d9g6mfoo4y
Storage mechanism historyData returned: undefined
Storage mechanism pngData returned: d9g6mfoo4y
Storage mechanism etagData returned: d9g6mfoo4y
Storage mechanism cacheData returned: d9g6mfoo4y
Storage mechanism dbData returned: d9g6mfoo4y
Storage mechanism lsoData returned: d9g6mfoo4y
Storage mechanism slData returned: d9g6mfoo4y

Моя проблема в том, как предотвратить 90+ запросов, отправляемых в Google?Я понятия не имею, почему он это делает.Если у меня на сайте, скажем, десять пользователей одновременно (что немыслимо), то это более 900 (0).И есть ли у кого-нибудь из вас идеи, почему cookie сбрасывается каждый раз, когда я обновляю страницу? Это именно то, что я пытаюсь предотвратить.

1 Ответ

1 голос
/ 24 марта 2011

Ну, разве я не чувствую себя глупо!Оказалось, что вызов ec.set () в начале кода устанавливал cookie в начале каждой загрузки страницы.Итак, я кое-что подправил, и теперь это работает.И я больше не отправляю 90 запросов в Google.

// retrieve a cookie called "id" (simply)
ec.get("id", function(value) { 
    if(value == undefined){
        // set a cookie "id" to a random 10 character string
        // usage: ec.set(key, value)
        ec.set("id", "<?php echo $hash ?>");
    }
    else
    {
        // do nothing
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...