【问题标题】:authenticate to a 3rd party site with jquery?使用 jquery 对第三方站点进行身份验证?
【发布时间】:2012-05-19 13:19:51
【问题描述】:

我有一个简单的登录表单,可以让用户登录我的网站。登录后,我会链接一个第 3 方站点,用户可以访问该站点并在其上运行搜索(它是我们合作的数据库资源)。问题是为了访问第 3 方数据库,他们首先必须使用简单的密码(每个用户都相同)登录到该站点并获取 cookie。

我想通过在用户登录我的网站时对第三方网站运行 jquery $get 调用来简化整个过程,以便他们使用第三方 cookie 进行身份验证并可以无缝访问第三方数据库。这可能吗?

【问题讨论】:

  • 同源政策说不...
  • 我认为“同源策略”是说从一个域定义的函数和方法可以相互访问,但不能访问其他域的函数和方法。我不是在尝试访问另一个域的函数或方法,而是在尝试指示客户端的浏览器向另一个网站运行 GET 请求并在 URL 中传递密码以接收 cookie。
  • 你看过 JSONP 吗? en.wikipedia.org/wiki/JSONP

标签: javascript jquery


【解决方案1】:

由于阻止从第三方网站加载(“同源策略”),这样的调用将不起作用,但是一个简单的隐藏 iframe 呢?既然你说你会使用get 调用,你应该能够在隐藏的 iframe 中从他们的浏览器发出相同的请求。

【讨论】:

  • 有趣的想法,我不会反对隐藏 iframe。但是有一个问题:您说 iframe 中的请求将被允许,因为它来自“他们的”浏览器。但这与 jquery 的情况相同,对吗?这就是 javascript 的整个模型,它是从客户端计算机运行的。使用 Jquery,我将指示他们的 Web 浏览器向第 3 方 URL 发出 HTTP GET 请求,并在 URL 中传递密码以接收身份验证 cookie。那为什么不行呢?
  • jQuery 只是 Javascript,作为安全预防措施,浏览器通过 XmlHttpRequest 对象(所有 Ajax 请求都经过)对 Javascript 调用强制执行“同源策略”。它实际上是所有浏览器供应商都遵守的标准,并且不仅适用于 XmlHttpRequest;它也适用于尝试访问可能加载在框架或选项卡中的不同网站上的 DOM。
  • 其中一个原因是 XmlHttpRequest 不仅支持get 请求,还支持postputdelete。 Web 浏览器强制执行此操作是为了保护 destination 域。是的 - 您仍然可以通过框架进行get 请求,但这是附加内容所必需的;甚至不需要 iframe(你可以像加载图像的 src 一样轻松地加载“cookie 页面”,尽管这样做在语义上是不正确的)
  • 知道了。而且我还刚刚找到了解释政策的内容:stackoverflow.com/questions/1830050/… 谢谢,我会查看隐藏的 iframe。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-06
  • 2016-03-24
  • 2020-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多