使用Kohana和JavaScript的跨源请求

使用Kohana和JavaScript的跨源请求,javascript,cross-domain,kohana-3.3,Javascript,Cross Domain,Kohana 3.3,我正在尝试实现一些代码,允许一个子域与另一个子域通信,例如one.example.com和two.example.com。这两个站点能够共享cookie和会话数据,因为我已将cookie设置为使用.example.com 当我通过标准HTTP访问任一站点时,我可以转储会话并查看预期数据。但是,如果我使用jQuery$.ajax()通过JavaScript执行此操作,转储的会话数据将为空。在这两种情况下,我都使用PHP转储会话数据 我尝试了以下解决方案,但没有成功()。我还使用了一个稍新版本的Ko

我正在尝试实现一些代码,允许一个子域与另一个子域通信,例如
one.example.com
two.example.com
。这两个站点能够共享cookie和会话数据,因为我已将cookie设置为使用
.example.com

当我通过标准HTTP访问任一站点时,我可以转储会话并查看预期数据。但是,如果我使用jQuery
$.ajax()
通过JavaScript执行此操作,转储的会话数据将为空。在这两种情况下,我都使用PHP转储会话数据

我尝试了以下解决方案,但没有成功()。我还使用了一个稍新版本的Kohana(3.3)

我还尝试在标题到达控制器时设置标题:

$this->response->headers('Access-Control-Allow-Origin', 'http://one.example.com');
$this->response->headers('Access-Control-Allow-Credentials', 'true');
$this->response->headers('Access-Control-Allow-Methods', 'POST, GET, OPTIONS');

但是,Chrome inspector仍将访问控制允许原点显示为问题所在

我遇到的问题是由于我的Apache配置文件中的设置造成的,如下所示:

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
</IfModule>
JavaScript/jQuery

在我的
$.ajax()
请求中,我必须确保将
xhrFields.withCredentials
属性设置为
true

$.ajax({
    url: 'two.example.com',
    xhrFields: {
        withCredentials: true
    }
});
或者我可以为所有ajax请求全局设置它,如下所示:

$(document).ajaxSend(function (event, xhr, settings) {
    settings.xhrFields = {
        withCredentials: true
    };
});
有关更多信息,请查看
$.ajax
文档:

进一步阅读

有关更多信息,请查阅以下资源:

$(document).ajaxSend(function (event, xhr, settings) {
    settings.xhrFields = {
        withCredentials: true
    };
});