0

要件を検索し、質問に対する回答を見つけました。しかし、私はそれを機能させることができませんでした。したがって、ここに要件を投稿することを考えました。

私のウェブサイトはサードパーティベンダーによってホストされており、それらのサーバーを制御することはできません。私は彼らのhtmlページの1つにiframeを設定しています。このiframeは私のサーバーを指し、ベンダーがメインページで設定したCookieにアクセスできるはずです。これを試すために、2つのhtmlページを作成しました。1つはSetCookie.htmlという名前になり、もう1つはGetCookie.htmlという名前になります。どちらも異なるコンピューターに常駐しています。以下のソースコードを見つけてください。

SetCookie.html

<html>
    <head>
        <title>Set Cookie</title>
    </head>
    <body>

        <script type="text/javascript">
            function setCookie() {
                var cookieValue = document.getElementById("txtCookie").value;
                var cookieName = "TestCookie";
                document.cookie = cookieName + "=" + cookieValue;
                document.getElementById("tdCookieMessage").innerHTML = cookieName + "=" + cookieValue + " is set!";
            }
        </script>

        <table>
            <tr>
                <td>
                    Cookie
                </td>
                <td>
                    <input type="text" id="txtCookie" value="" />
                </td>
                <td>
                    <input type="button" id="btnGetCookie" onclick="setCookie();" value="Set Cookie!" />
                </td>
            </tr>
            <tr>
                <td colspan="3" id="tdCookieMessage">
                </td>
            </tr>
        </table>
        <table>
            <tr>
                <td>
                    <iframe src="http://myServer/GetCookie.html"></iframe>
                </td>
            </tr>
        </table>
    </body>
</html>

GetCookie.html

<html>
<head>
    <title>Get Cookie</title>

    <script type="text/javascript">
        function getCookie(cookieName) {
            var i, x, y, ARRcookies = document.cookie.split(";");
            for (i = 0; i < ARRcookies.length; i++) {
                x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("="));
                y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1);
                x = x.replace(/^\s+|\s+$/g, "");
                if (x == cookieName) {
                    document.getElementById("tdCookie").innerHTML = unescape(y);
                    expireCookie(cookieName);
                }
            }
        }
        function expireCookie(cookieName) {
            document.cookie = cookieName + '=; expires=Thu, 01-Jan-70 00:00:01 GMT;';
        }
    </script>

</head>
<body>
    <table>
        <tr>
            <td>
                <input type="button" id="btnGetCookie" onclick="getCookie('TestCookie');" value="Test Cookie Value is: " />
            </td>
            <td id="tdCookie">
            </td>
        </tr>
    </table>
</body>
</html>

任意の提案をいただければ幸いです。

4

1 に答える 1

0

ページが存在するドメインに設定されている Cookie のみがページに送信されます。つまり、あなたが mywebsite.com にいて、彼らが theirdomain.com にいる場合、あなたは彼らの Cookie を受け取りませんし、彼らもあなたの Cookie を受け取りません。セキュリティ上の理由から、これが Cookie の仕組みです。

あなたのサイトとベンダーのサイトの両方が同じドメインにある場合、これを回避できます。アプリケーション間で Cookie を共有できます。

つまり、them.mywebsite.com と me.mywebsite.com は両方とも *.mywebsite.com の Cookie を受け取ります。

于 2012-07-11T20:29:37.357 に答える