V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
node
V2EX  ›  程序员

弹窗是怎么和打开它的页面通信的

  •  
  •   node · 2013-09-28 16:39:02 +08:00 · 3262 次点击
    这是一个创建于 4072 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如像quora上的google登陆,这种弹窗是用window.open打开的吗?在这种跨域的情况下,弹窗又是怎样让打开它的窗口知道登录成功的?
    8 条回复    1970-01-01 08:00:00 +08:00
    zhujinliang
        1
    zhujinliang  
       2013-09-28 16:50:41 +08:00   ❤️ 1
    window.opener
    loveminds
        2
    loveminds  
       2013-09-28 17:45:50 +08:00 via Android
    OAuth不是这样的吧
    pubby
        3
    pubby  
       2013-09-28 17:50:14 +08:00   ❤️ 1
    window.opener

    解决跨域的话,一种办法是用到一些iframe,保证域一致就可以
    lizheming
        4
    lizheming  
       2013-09-28 20:30:42 +08:00   ❤️ 1
    这个问你是不是用window.open打开弹窗是没关系的,跳转的地址每次都会带一个redirect_uri参数,最后会将登陆信息发送到这个redirect_uri上去的。
    比如你用window.open('http://google.com/?redirect_uri=http://abc.com/callback'), 在google的这个页面认证成功之后google会将相关的个人信息一块发送到http://abc.com/callback去,然后你就获取到用户的信息啦~
    node
        5
    node  
    OP
       2013-09-28 22:09:16 +08:00 via Android
    感谢楼上各位
    @lizheming 还想请教一下,是不是说弹窗无论怎么跳转,window.opener都还是指向原来的主窗口?
    lizheming
        6
    lizheming  
       2013-09-28 22:28:24 +08:00
    @node 也不是,是不管怎么跳转,都带着一个redirect_uri参数,google那边始终能了解你最终要跳转回哪个地址。
    pubby
        7
    pubby  
       2013-09-28 22:40:46 +08:00   ❤️ 1
    @node 是的,但是能否访问window.opener里的资源,要看是否跨域而定。
    node
        8
    node  
    OP
       2013-09-28 23:30:29 +08:00
    @pubby @lizheming
    嗯,明白了,多谢指教啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5693 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 01:41 · PVG 09:41 · LAX 17:41 · JFK 20:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.