大家好,
我正在我们的网站上测试内部广告的服务...
我需要保存内部会话(PHP)才能知道广告的内容以及其他一些保护内容......
问题是,如果我通过webbrowser GET或POST 访问API,会话(并保存php会话的cookie),但如果我使用{ {1}}方法不保存 ...
我的测试链接是http://search.microdual.com
(这是因为我想在我的笔记本电脑上进行自定义谷歌搜索:p)
我建议您使用 firebug 来查看 javascript代码。 (不需要PHP代码,因为它正在处理点击...)
为了简化调试,我打印出来自服务器的响应json数组 var jQuery.ajax()
上的会话ID ......
提前致谢,
何塞莫雷拉
修改
来自服务器的标头:
{id_sessao:"..."}
来自jQuery Ajax请求的标头:
Date Wed, 08 Sep 2010 11:24:48 GMT
Server Apache/2.2.8 (Ubuntu)
P3P CP="NOI NID ADMa OUR IND UNI COM NAV"
Cache-Control private, must-revalidate
Access-Control-Allow-Orig... *
Access-Control-Allow-Cred... true
Access-Control-Allow-Meth... OPTIONS, GET, POST
Access-Control-Allow-Head... Content-Type, Depth, User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name, Cache-Control
Set-Cookie SN4b55935921bde=7ad280272050b4b44f17769909fd6f34; path=/ SN4b55935921bde=7ad280272050b4b44f17769909fd6f34; path=/
Keep-Alive timeout=15, max=97
Connection Keep-Alive
Transfer-Encoding chunked
Content-Type text/html; charset=UTF-8
jQuery Ajax请求的cookie控件在哪里?
答案 0 :(得分:5)
问题可能是您的父文档位于search.microdual.com
,并且您正在从www.microdual.com
请求脚本。会话cookie不会跨域传输。
如果您没有使用document.domain
- 我在任何地方都看不到它? - 您还会遇到由于Single Origin Policy而导致AJAX调用失败的其他问题。
要修复Cookie问题,您可以
将Cookie的域设置为.microdual.com
,以便它在两个子域中都有效
在网址(?sessionid=xxxxx
)中手动进行会话,并使用session_id("xxxxx");
继续会话。
将两个脚本放在同一个子域(search.microdual.com
)
后者是最简单的方式。