无法访问 iframe 中加载的自己域上的 httponly 标记 cookie

Posted

技术标签:

【中文标题】无法访问 iframe 中加载的自己域上的 httponly 标记 cookie【英文标题】:Unable to access httponly flagged cookie on own domain loaded in iframe 【发布时间】:2017-01-11 05:15:02 【问题描述】:

我正在制作一个 chrome 扩展程序,它在网页上注入 iframe 并显示一些内容。

iframe 中加载的内容来自 https://example.com,我对它有完全控制。我正在尝试通过document.cookie 从 iframe(我认为应该可用)访问https://example.com 的 cookie。这不会让我访问带有 httponly 标记的 cookie,我不知道这是为什么。毕竟这不是跨域的。是吗? 这是我用来获取 cookie 的代码

jQuery("#performAction").click(function(e) 
    e.preventDefault();
    console.log(document.domain); // https://example.com
    var cookies = document.cookie;
    console.log('cookies', cookies);
    var httpFlaggedCookie1 = getCookie("login_sess");
    var httpFlaggedCookie2 = getCookie("login_pass");
    console.log('httpFlaggedCookie1 ', httpFlaggedCookie1 ); // shows blank
    console.log('httpFlaggedCookie2 ', httpFlaggedCookie2 ); // shows blank
    if(httpFlaggedCookie2 != "" && httpFlaggedCookie2 != "")
        doSomething();
     else
        somethingElse();
    
);

有什么建议可以为此做些什么吗?

【问题讨论】:

【参考方案1】:

在 Chrome 中默认为HttpOnly cookies are prevented to be read and written in javascript

但是,由于您正在编写 chrome 扩展,您可以使用 chrome.cookies.getchrome.cookies.set 进行读/写,并在 manifest.json 中声明 cookies 权限。请注意chrome.cookies 只能在后台页面中访问,因此您可能需要使用Message Passing 做一些事情

【讨论】:

感谢您的回复,能给我举个例子吗? @TusharShukla, ***.com/questions/5892176/… 我所有的代码都在我正在 iframe 中加载的页面中,chrome.cookies.get 会在那里工作吗?如果没有,那么在这种情况下我该如何访问 cookie? @TusharShukla,当然,据我所知,cookie 绑定到 url 而不是标签(框架) 我问这个是因为我收到了Uncaught TypeError: Cannot read property 'get' of undefined 错误。

以上是关于无法访问 iframe 中加载的自己域上的 httponly 标记 cookie的主要内容,如果未能解决你的问题,请参考以下文章

访问iframe[javascript][DOM][iframe][for twitter]中加载的页面的DOM

如果我使用 www,我可以从子域访问 iframe 的内容吗?在主域上?

从单独(不属于我)域上的 iframe 获取 src 属性(视频链接)到我自己的网站(动态)

将参数附加到单击后在 DOM 中加载的 iframe

允许子 iframe 从不同域调用其父窗口上的函数

FancyBox iFrame 元素上的绑定事件