在iframe中无法访问跨域的Cookie

在iframe中无法访问跨域的Cookie,iframe,cookies,cross-platform,Iframe,Cookies,Cross Platform,我搜索了我的要求,找到了问题的答案。但我不能让它工作。因此,我想在这里发布我的要求 我的网站由第三方供应商托管,我无法控制他们的服务器。 我在他们的一个html页面中设置了一个iframe。此iframe将指向我的服务器,我应该能够访问供应商在其主页中设置的cookie。为了尝试这个,我创建了两个html页面。一个名为SetCookie.html,另一个名为GetCookie.html。两者都位于不同的计算机中。请在下面查找源代码: SetCookie.html <html>

我搜索了我的要求,找到了问题的答案。但我不能让它工作。因此,我想在这里发布我的要求

我的网站由第三方供应商托管,我无法控制他们的服务器。 我在他们的一个html页面中设置了一个iframe。此iframe将指向我的服务器,我应该能够访问供应商在其主页中设置的cookie。为了尝试这个,我创建了两个html页面。一个名为SetCookie.html,另一个名为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>
<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>

设置Cookie
函数setCookie(){
var cookieValue=document.getElementById(“txtCookie”).value;
var cookieName=“TestCookie”;
document.cookie=cookieName+“=”+cookieValue;
document.getElementById(“tdCookieMessage”).innerHTML=cookieName+“=”+cookieValue+“已设置!”;
}
曲奇
GetCookie.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>
<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>

拿饼干
函数getCookie(cookieName){
变量i,x,y,ARRcookies=document.cookie.split(“;”);
对于(i=0;i<0.length;i++){
x=ARRcookies[i].substr(0,ARRcookies[i].indexOf(“=”);
y=ARRcookies[i].substr(ARRcookies[i].indexOf(“=”)+1);
x=x.replace(/^\s+|\s+$/g,”);
如果(x==cookieName){
document.getElementById(“tdCookie”).innerHTML=unescape(y);
expireCookie(cookieName);
}
}
}
函数expireCookie(cookieName){
document.cookie=cookieName+';expires=Thu,70年1月1日00:00:01 GMT;';
}

如有任何建议,我们将不胜感激

只有为页面所在的域设置的cookie才会发送到页面。如果你在mywebsite.com上,他们在他们的域名上,你将不会收到他们的cookies,他们也不会收到你的cookies。出于安全原因,cookies就是这样工作的

如果您的站点和供应商的站点位于同一个域上,那么您可以绕过这个问题,然后在应用程序之间共享cookie


IE theme.mywebsite.com和me.mywebsite.com都会收到*.mywebsite.com的cookies。

只有为页面所在域设置的cookies才会发送到页面。如果你在mywebsite.com上,他们在他们的域名上,你将不会收到他们的cookies,他们也不会收到你的cookies。