从JavaScript读取Facebook应用程序Cookie?

从JavaScript读取Facebook应用程序Cookie?,javascript,cookies,facebook,Javascript,Cookies,Facebook,(我相当肯定这个问题的答案是非常简单的“不”,但我想我会问,以防这里的任何人在过去找到了一个聪明的解决方案/解决办法。) 以简单的Facebook开发为例,您可以看到它如何读取cookie以获得必要的值,并将其放入JavaScript代码中。像uid和access\u token这样的值是插入JavaScript访问(比如)用户的社交图所必需的。cookie在服务器端读取,然后尽可能多的Facebook访问在客户端完成(对图形的ajax调用,等等) 但是,有没有一种方法可以在客户端访问cooki

(我相当肯定这个问题的答案是非常简单的“不”,但我想我会问,以防这里的任何人在过去找到了一个聪明的解决方案/解决办法。)

以简单的Facebook开发为例,您可以看到它如何读取cookie以获得必要的值,并将其放入JavaScript代码中。像
uid
access\u token
这样的值是插入JavaScript访问(比如)用户的社交图所必需的。cookie在服务器端读取,然后尽可能多的Facebook访问在客户端完成(对图形的ajax调用,等等)

但是,有没有一种方法可以在客户端访问cookie呢

我明白:

  • 不管怎样,cookie都会被发送到服务器,因此这只会节省少量的服务器端处理
  • 不得在任何客户端代码中提供“应用程序机密”。(这就是为什么我认为答案是“不”)
  • 很可能没有很好的理由这样做,也有一些很好的理由不这样做

这更像是一种好奇心(对于Facebook开发来说是新手,而且几乎不是JavaScript开发方面的专家),而不是直接的业务需求。我们没有计划将cookie解析移到客户端代码,我只是想知道这是否可能,或者是否有人曾经这样做过。

您可以使用
document.cookie
访问javascript中的cookie信息,但您只能读取运行脚本的同一域中的cookie。例如,如果我的网站www.xyz.com包含facebook的iframe,当我调用
document.cookie
时,我只会看到xyz.com的cookies,而不是facebook.com。

是的,用JavaScript获取cookie应该不会有问题。主要问题是在不暴露客户端代码中的“应用程序机密”的情况下从cookie中获取必要的值。没有应用程序机密,无法解码cookie。为什么不在服务器上执行此操作?服务器可以根据cookie值提供适当的响应逻辑,您不必公开应用程序机密。@SRM:“为什么不在服务器上这样做?”真的没有特别的原因。我们现在在服务器上这样做,因为这是有意义的。这个问题基本上只是一个无聊的好奇心。@David这是一个公平的问题,尽管我认为你不可能在不违反服务条款或不使你的应用程序不安全的情况下做到这一点。