Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.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 Kohana/JQuery身份验证访问问题_Javascript_Jquery_Ajax_Kohana 3.3_Kohana Auth - Fatal编程技术网

Javascript Kohana/JQuery身份验证访问问题

Javascript Kohana/JQuery身份验证访问问题,javascript,jquery,ajax,kohana-3.3,kohana-auth,Javascript,Jquery,Ajax,Kohana 3.3,Kohana Auth,我有一个使用Kohana ORM Auth的网站。我有一个url,当通过ajax调用时,它将检查用户是否登录,并返回与用户角色对应的json_编码数据。当我在普通浏览器窗口中尝试此url时,它工作正常。它返回了正确的值,但是当通过AJAX调用尝试时,Auth::instance->logged\u in返回FALSE,即使我确信用户已登录。 我遵循以下链接中列出的说明 但它并没有解决这个问题 到目前为止,我所做的是,我在基本控制器以及编写请求操作的文件中添加了以下行 header('Access

我有一个使用Kohana ORM Auth的网站。我有一个url,当通过ajax调用时,它将检查用户是否登录,并返回与用户角色对应的json_编码数据。当我在普通浏览器窗口中尝试此url时,它工作正常。它返回了正确的值,但是当通过AJAX调用尝试时,Auth::instance->logged\u in返回FALSE,即使我确信用户已登录。 我遵循以下链接中列出的说明 但它并没有解决这个问题

到目前为止,我所做的是,我在基本控制器以及编写请求操作的文件中添加了以下行

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST');  
header('Access-Control-Allow-Credentials: TRUE'); 
在发送实际请求之前,在ajax中编写以下代码

beforeSend: function(xhr){
            xhr.withCredentials = true;
        },
编辑-------

我尝试使用下面的方法,但它给了我一个COR问题

$.ajax({
        type: 'GET',
        url: "http://www.domain.com/web/joblist",
        xhrFields: {
            withCredentials: true
        },
        dataType: "json",
        data:{
            "tab":currentTab,
            "page":currentPage,
            "filter":filterStr
        },
        success: function(json){  ...
        },
        error: function(e) {
            ...
        }
    });

使用数据类型:jsonp


希望这能解决您的问题。

是否使用浏览器请求AJAX调用?而不是卷发请求。如果是,请检查AJAX调用是否成功,以及它返回的内容,例如使用firefox firebug控制台选项卡

在我看来,您不必担心凭据,因为您提到它在同一个域上。因此,检查用户是否登录是由AJAX端点上的php控制器完成的

因此,通过一个普通的AJAX调用,您应该能够在检查是否有人登录的地方调用您的控制器。例如

// set ajax setup
$.ajaxSetup({
type : "GET",
statusCode : {
    404 : function() {
        alert('Page not found.');
    },
    500 : function() {
        alert('Server error.');
    }
}
})


这有帮助吗,还是我完全没有领会你的意思?

问题是,www.没有添加到url的开头,auth拒绝了来自url的服务请求,而url中没有www.的前缀。

尝试替换http://www.domain.com/web/joblist 到/web/joblistDestination URL同一域或不同??目标URL相同。
$.ajax({
    dataType : "json",
    url : 'some/uri/',
    data : {
        name : name
    },
    success : function(response) {
       // do something with the response
    }
});