我们有一个网页,可以从其他服务器获取数据。该页面是“本地”加载的(即从文件系统,这个Web应用程序将被放置在一个phonegap应用程序中,因此我们通过从文件:// url加载它来将其模拟为firefox / chrome),并使用jquery和ajax从服务器检索数据。 服务器似乎配置为遵守CORS标准(http://www.w3.org/TR/cors/,即我们设置标头,例如Access-Control-Allow-Origin,Access-Control-Allow-Credentials和Access-Control- Max-Age)但是,似乎服务器设置的会话cookie永远不会被读取也不会传递回服务器。 如果我们在服务器上“手动”创建一个会话(即在地址栏上发出请求以便服务器在客户端上设置cookie),然后我们打开上述页面,该cookie永远不会传递回服务器在Ajax请求中。
任何可能出错的暗示?
答案 0 :(得分:1)
您正在测试哪种浏览器? IE和Safari对于允许设置cookie的响应有特殊的规则,特别是当它们是从本地的页面主机制作时。您是否在某个非本地文件系统的域上测试了此页面?
对于IE,您需要配置服务器的P3P标头。对于Safari,您必须先浏览服务器的URL,然后才能允许从不同域的页面发出的任何请求设置cookie。
答案 1 :(得分:0)
您是否尝试从框架或IFrame设置Cookie?
您的问题可能与第三方Cookie政策有关。 我发现在网络服务器上设置以下P3P标头在大多数情况下都有帮助:
P3P:CP = NOI NID NOR
此解决方案不适用于Safari,但在IE& Firefox浏览器。 由于您的应用是针对iPhone的,因此可能无法解决您的问题。