Php 使用ajax在服务器端创建的Cookie不能作为http调用访问
我有一个web页面index.php,其中我正在执行一个ajaxPhp 使用ajax在服务器端创建的Cookie不能作为http调用访问,php,jquery,ajax,cookies,Php,Jquery,Ajax,Cookies,我有一个web页面index.php,其中我正在执行一个ajax //index.php <script src="jquery-2.0.3.js"></script> <script type="text/javascript"> $(document).ready(function(){ $.get('ajax.php', function(data){ console.log(data); });
//index.php
<script src="jquery-2.0.3.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$.get('ajax.php', function(data){
console.log(data);
});
})
</script>
//index.php
$(文档).ready(函数(){
$.get('ajax.php',函数(数据){
控制台日志(数据);
});
})
在服务器端,我在ajax.php中创建了一些cookie
//ajax.php
<?php
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
setcookie("Phone", '111111', time() + 86400);
print_r($_COOKIE);
?>
//ajax.php
现在我打开另一个页面test.php并尝试获取此cookie,但我正在获取cookie,我尝试打印cookie
//test.php
<?php
print_r($_COOKIE);
?>
//test.php
但是这些cookie不会打印。通过PHP over AJAX设置的cookie不会在客户端中设置,因为它们是在加载页面时浏览器接收的HTTP头中定义的。这就是为什么在发送输出后不能调用setcookie 不过,使用javascript设置cookie非常容易: 如果PHP脚本正在进行cookie中需要的计算,只需将它们作为JSON传递回去,然后通过javascript进行设置
我不知道它的工作情况如何,但这里有一个用于管理cookie的jQuery插件:cookie是否已设置?在设置cookie之前,您应该发布完整的
ajax.php
脚本。请注意,在使用setcookie
之前不能输出任何内容,因为cookie是作为标头的一部分发送的。另外请注意,默认路径会导致cookie仅在设置cookie的文件夹中可用。我已经更新了what ajax.php正在执行的操作…只要检查开发人员工具中是否有cookie;firebug中的Cookies选项卡或Chrome中的Resources->Cookies。不,我在开发者工具中没有找到这些Cookies…所以发布整个ajax.php
脚本。