4

次の方法を使用してサードパーティのCookieを設定しようとしています。

SiteA

<img src="http://www.siteB.co.uk/cookie.php" />

SiteB

<script>

    document.cookie = "name=thirdpartytest; expires=07/07/2013; path=/;domain=SiteB.co.uk";

</script>

SiteB / cookie.phpに直接アクセスすると、期待どおりにCookieがドロップします。ただし、SiteAにアクセスしてもCookieは削除されません。

同じ方法を使用しているが、PHPを使用してCookieを削除すると、うまく機能します。このシナリオでJavascriptがCookieをドロップしない理由はありますか?.phpページが画像であると言うHTTPコンテンツタイプのヘッダーが送信されていないためかもしれないと思いました。しかし、PHPバージョンのコードが機能するためにそれを適切に配置する必要はなかったようです。

JSを使用してこれを機能させる方法はありますか?それも可能ですか?たとえば、DoubleClickはこれをどのように機能させますか?

参考:これは、Cookieを正常に削除したPHPコードです。

<?php 
$CookieName = "my3Pcookie";    // Cookie's name
$CookieValue = "hello, there"; // Cookie's value
$CookieDirectory = "/";        // Cookie directory ("/" for all directories)
$DaysCookieShallLast = 31;     // Days before expiration (decimal number okay.)


$lasting = ($DaysCookieShallLast<=0) ? "" : time()+($DaysCookieShallLast*24*60*60);
setcookie($CookieName,$CookieValue,$lasting,$CookieDirectory);

?>
4

1 に答える 1

3

あなたの問題は、<img>使用している -tag に明確に基づいています。画像内で JavaScript コードが実行されることはありません。

PHP で実行した場合に機能する理由は、サーバーがファイルの要求時にコードを前処理しているためです。有効な画像ヘッダーを提供しなかったため、おそらく何も表示されません。

-tagを使用する<iframe>と、クライアントが JS コードを読み取って実行できるため、すべてが機能します。

<iframe src='http://www.siteB.co.uk/cookie.php'></iframe>

しかし、-tag で Cookie を設定しようとすると、この例の PHP のような言語<img>でそれを行う必要があります。server-side

Doubleclick のようなエージェンシーは、iframe、ページに挿入する必要がある JavaScript スニペット、またはサーバー側のソリューションを使用しています。

お役に立てれば。

于 2013-01-19T19:23:50.237 に答える