Trackingpixel ar trebui să încarce un site web extern printr-o pagină de referință - dar nu funcționează

Am o problemă cu un trackingpixel. Trackingpixel este inclus pe pagina principală:


Tracking.gif conține următoarele:

<?php
header("Location: http://www.mydomain.com/referrer.php?url=http%3A%2F%2Fwww.external.com")
?>

Referrer.php arată astfel:

<?php
$url = $_GET['url'];
?>


    <head>
        <title>Referring...</title>
        <link rel="stylesheet" type="text/css" href="css.css" />
        <meta http-equiv="refresh" content="0.3; URL=<?php echo $url ?>" />
        <script type="text/javascript">
                    window.setTimeout(function() {
                        location.href = '<?php echo $url ?>';
                    }, 300);
        </script>
    </head>
    <body>
        Some text.
    </body>
</html>

Din păcate, redirecționarea către site-ul web extern nu funcționează. Numai referrer.php se încarcă. De ce este asta? Codul funcționează dacă înlocuiesc adresa URL de trimitere în tracking.gif de adresa URL a site-ului web extern.

More Info: If I call the referrer.php directly, it's working. And I set the server via htaccess that it shoud handle the tracking.gif as a php-file.

Vă mulțumim pentru ajutor în prealabil!

0
Da am făcut! Dacă apelez scriptul referrer.php direct, acesta funcționează.
adăugat autor AndiPower, sursa
Ați setat serverul să se ocupe de fișier ca un script php? Ce se întâmplă dacă apelați scriptul direct prin browserul dvs.?
adăugat autor clentfort, sursa

1 răspunsuri

Răspunsul la întrebarea dvs. se referă la modul în care browserele gestionează active de diferite tipuri și ce active au dreptul să facă efectiv.

Prima ta bucată de cod:


Spune browserului să încarce și să afișeze o imagine dintr-o anumită locație. Pentru a face acest lucru, va face o cerere HTTP pentru imagine. Acesta este motivul pentru a doua piesă de cod:

<?php header("Location: ....") ?>

funcționează efectiv. Browserul trimite o solicitare HTTP pentru tracking.gif, iar răspunsul direcționează browserul către o altă locație. Acest lucru este bine (deși ar trebui să setați, de asemenea, starea răspunsului la 302 pentru completare) și browserul va trece la noua adresă URL în căutarea datelor de imagine.

Iată că am lovit problema. Când urmăm redirecționarea către noua noastră pagină, nu primim o imagine înapoi - obținem niște cod HTML. Browserul nu poate interpreta acest lucru ca pe o imagine. Pare a fi o prostie. Și așa este aruncat. Browserul nu va verifica, sau va executa, codul încorporat în datele imaginilor proaste. Este pur și simplu să dați datele conductei responsabile pentru desenarea imaginilor, care apoi vor spune "Nu înțeleg acest lucru" și trec la următoarea sarcină.

Acesta este motivul pentru care pagina referrer.php funcționează atunci când o încărcați direct în browser - deoarece browserul așteaptă HTML și Javascript. Atunci când aceleași date sunt primite de browser se așteaptă o imagine, rezultatul este eșec.

Acesta apare că încercați să determinați browserul să meargă la o altă adresă URL atunci când se încarcă o imagine, ceea ce nu este permis de modelul de securitate - fișierele imagine nu pot injecta comportamentul în paginile care le includ. Puteți despacheta ceea ce încercați să realizați într-un mod mai detaliat?

0
adăugat
JavaScript, România - Moldova
JavaScript, România - Moldova
328 participanți

Comunitatea Română JavaScript: github.com/js-ro Pentru confort, opriți notificările. Parteneri: @node_ro, @php_ro, @python_ro, @seo_ro, @RomaniaGroup, @ai_ro, @Grupuri_IT Offtop: @holywars_ro Joburi: @js_jobs_ro Sponsored with ❤️ by ciupacabra.com

PHP România, Moldova
PHP România, Moldova
173 participanți

Vorbim despre Yii, Laravel, Symphony, MySQL, PgSQL, WP, OpenCart... Pentru confort, opriți notificările. Parteneri: https://ciupacabra.com @js_ro @node_ro @python_ro @seo_ro @Romania_Bot Offtop: @holywars_ro Joburi: @php_job @Grupuri_IT