【问题标题】:Cookies and JSONPCookie 和 JSONP
【发布时间】:2010-11-19 08:32:34
【问题描述】:

我对浏览器发送的 JSONP 和 cookie 有疑问。

实际上,我有两个网站:server1 和 server2。我希望我的用户对 server1 进行身份验证,当他们转到 server2 时,我想检查(通过对 server1 的 Javascript JSONP 调用)他们是否经过身份验证。

server1 上的身份验证由 cookie 管理,我认为当我通过 JSONP 调用 server1 时,浏览器会发送 cookie,然后身份验证就会起作用。但似乎浏览器(FF)在通过 JSONP 发送请求时不会将 cookie 发送到 server1。

有谁知道浏览器在使用 JSONP 请求时是否发送 cookie?如果不是这种情况,如果用户在 server1 上从 server2 进行身份验证,那么检查 Javascript 的更好解决方案是什么?

感谢您的回答,

文森特

【问题讨论】:

  • 在server1页面加载一个隐藏的Server2的iFrame,然后在iFrame中获取你需要的cookies等。通过 Javascript 将消息传回 server1。

标签: javascript authentication cookies jsonp


【解决方案1】:

这取决于这些服务器的域名。如果它们是server1.example.comserver2.example.com,您可以将cookie 设置为依赖于域.example.com。然后将 cookie 发送到两个服务器。

如果你不能像我写的那样做,你将不得不做一些解决方法。例如通过 iFrame。

【讨论】:

    【解决方案2】:

    我同意@Jakub 所说的,并进一步解释您的情况可能会发生什么。我假设您的域为 server1.com 和 server2.com

    因此,如果您从 server2.com 上的应用程序设置 cookie,并从 server1.com 向 server1.com 上的应用程序发出 JSONP 请求,如果之前从 server1.com 设置了 cookie,它将发送 cookie。否则它不会发送任何由 server2.com 设置的 cookie。实际上,浏览器正在从 server2.com 的应用程序向 server1.com 发出请求,这与 server2.com 从 CDN 或任何其他服务器请求 JavaScript 文件完全相同。因此它不会发送任何 server2.com cookie,否则会成为浏览器的大安全问题。

    希望它有意义。

    【讨论】:

      猜你喜欢
      • 2011-05-14
      • 2012-06-12
      • 2014-01-07
      • 1970-01-01
      • 2015-04-14
      • 2011-11-02
      • 2014-12-12
      • 2014-09-05
      • 2012-07-31
      相关资源
      最近更新 更多