2013-10-03 21 views
2

我在这里工作。交叉子域Ajax表单提交会话

的Javascript

$('#create').submit(function() { 
$.ajax({ 
    data: $(this).serialize(), 
    type: $(this).attr('method'), 
    url: $(this).attr('action'), 
    success: function(response) { 
     console.log(response); 
    } 
}); 
return false; 
}); 

php文件(URL):

session_start(); 
header('Access-Control-Allow-Origin: *'); 
session_set_cookie_params(time() + 3600, '/', '.domain.com'); 
print_r($_SESSION); 
die; 

在与形式我的会话[MEMBERID] = [INT一些]页;

但是,如果我让Ajax调用整个sesison变量是空

我试图寻找对谷歌的一些答案,我试图寻找关于堆栈溢出

,但没有一些答案真的帮助。我不喜欢使用iframe。也许这是解决方案,但也许有人知道我需要在这里做什么。

的形式位于域m.domain.com 和PHP文件位于domain.com

+0

你能发布原始的ajax请求/响应包括头文件吗? – marekful

回答

2

所以,我固定它。我将我的文件从根目录复制到我的移动根目录,然后通过真实根目录包含。它现在有效。我尝试了其他评论,但那些也不起作用。

感谢所有的快速反应!

0

我认为你需要告诉jQuery的在XHR2使用CORS客户端支持:

$('#create').submit(function() { 
    $.ajax({ 
     data: $(this).serialize(), 
     type: $(this).attr('method'), 
     url: $(this).attr('action'), 
     xhrFields: { withCredentials: true }, 
     crossDomain: true, 
     success: function(response) { 
      console.log(response); 
     } 
    }); 
    return false; 
}); 
+0

我已经试过了,但它不工作:( –

+0

然后你没有正确配置你的服务器端支持,或者你使用的浏览器版本不支持XHR2。 –

+0

但是如果我设置了会话在domain.com上,我去m.domain.com一切正常,但当我做ajax调用时,我没有得到该会话。所以我的cookie是跨子域 –

2

此外,您必须将header('Access-Control-Allow-Headers: X-Requested-With');添加到服务器端才能正确处理呼叫。

阅读more here约CORS和服务器端处理