Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 会话cookie未在本地页、远程服务器上持久化?_Javascript_Php - Fatal编程技术网

Javascript 会话cookie未在本地页、远程服务器上持久化?

Javascript 会话cookie未在本地页、远程服务器上持久化?,javascript,php,Javascript,Php,我在本地计算机上有一个页面,其中包含与远程服务器交互的脚本。对于每个请求,它都会获得不同的PHPSESSID值。这是否与页面未与域关联有关?有没有办法解决这个问题,也许可以手动设置PHPSESSID,或者在php.ini中进行设置 听着,我也不知道反对票是从哪里来的,也不知道关闭的要求。对我来说,这就像是在开玩笑。这不是编码错误。这是一个服务器错误。代码不会起任何作用。说真的,尽可能简单和标准,比如: $.post('http://example.com/server.php',{'stuff'

我在本地计算机上有一个页面,其中包含与远程服务器交互的脚本。对于每个请求,它都会获得不同的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
)。

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


默认情况下不允许跨域ajax请求。您可以通过尝试jsonp请求来解决这个问题。有关更多信息,请参阅。

在我的本地计算机上使用使用php会话的ajax调用。相当标准。不需要代码。cookie随着每次ajax调用而变化。具体来说,
C:\website\page.html
。我不明白歧义是从哪里来的。谢谢。我不知道怎么做。我想这可能会让事情变得更清楚。这正是我所想的。考虑到
$.post
实际上只是
$.ajax
的一个别名,我认为这是行不通的。然而,你所说的证实了我的想法。到目前为止,我能找到的唯一方法是使用上的第一个注释手动设置会话id。我还认为in
php.ini
可能是一个答案,但我不确定。这将是理想的,因为手动设置ID有点麻烦。我想我可能已经找到了真正的原因!这是一个Chrome问题,我试图手动发送最后一个会话id,然后意识到我根本没有cookie。