会话cookie不会持久存储在本地页面,远程服务器上?

时间:2014-06-21 01:34:28

标签: javascript php

我的本​​地计算机上有一个页面,其中包含一个与远程服务器交互的脚本。对于每个请求,它都会获得不同的PHPSESSID值。这与页面没有关联的页面有什么关系吗?有没有办法解决这个问题,也许可以手动设置PHPSESSID或php.ini中的某些内容?

看,我也不知道这些挫折来自哪里或要求关闭。看起来好像在拖着我。这不是编码错误。这是服务器错误。代码什么都不做。说真的,尽可能简单明了,比如:

$.post('http://example.com/server.php',{'stuff':'data'},function(){

});
// PHPSESSID is 545ty789gh78rhr

然后,当我再次打电话时:

$.post('http://example.com/server.php',{'stuff2':'data'},function(){

});
// PHPSESSID is fnunurhf894fh

然后,在php页面上:

session_start();
if(isset($_POST['stuff']) $_SESSION['variable'] = '123';

if(isset($_POST['stuff2']) echo $_SESSION['variable']; // Returns nothing, as the PHPSESSID cookie value has changed

因此,我在php.ini中思考它或者与php如何处理没有http域的会话cookie(只是访问服务器的本地脚本)有关。我想知道php.ini中是否有某些内容可以解决这个问题,或者是否有手动设置PHPSESSID的方法(如果没有办法的话)通过php.ini)。

1 个答案:

答案 0 :(得分:1)

我认为您的问题是Cookie存储在每个域级别。您的浏览器在localhost上运行,服务器在example.com上运行。因此,当发出第一个ajax请求时,浏览器会收集所有localhost cookie并将它们一起发送。服务器找不到example.com PHPSESSID cookie,因此它会创建一个并启动一个新会话。当请求返回浏览器时,为example.com设置cookie。当第二个请求发出时,浏览器会查找它为localhost提供的任何cookie,找不到,并重复该过程。

默认情况下不允许跨域ajax请求。您可以通过尝试jsonp请求来解决问题。有关详细信息,请参阅jQuery's documentation