【问题标题】:Kohana/JQuery Auth access issueKohana/JQuery Auth 访问问题
【发布时间】:2014-10-26 06:59:33
【问题描述】:

我有一个使用 Kohana ORM Auth 的网站。我有一个 url,当通过 ajax 调用时,它将检查用户是否登录并返回与用户角色对应的 json_encoded 数据。当我在普通浏览器窗口中尝试时,此 url 工作正常。它返回了正确的值,但是当通过 AJAX 调用尝试 Auth::instance()->logged_in() 时,即使我确定用户已登录,它也会返回 FALSE。 我正在按照以下链接中的说明进行操作 jQuery getJSON doesnt send cookies 但它并没有解决问题。

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

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) {
            ...
        }
    });

【问题讨论】:

  • 尝试将http://www.domain.com/web/joblist替换为/web/joblist
  • 目标 URL 域相同还是不同??
  • 目标网址相同。

标签: javascript jquery ajax kohana-3.3 kohana-auth


【解决方案1】:

使用数据类型:jsonp。

希望这能解决您的问题。

【讨论】:

    【解决方案2】:

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

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

    因此,通过正常的 AJAX 调用,您应该能够调用您的控制器来检查是否有人登录。例如

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

    });

    $.ajax({
        dataType : "json",
        url : 'some/uri/',
        data : {
            name : name
        },
        success : function(response) {
           // do something with the response
        }
    });
    

    这有帮助吗,还是我完全错过了你的意思?

    【讨论】:

      【解决方案3】:

      问题在于 www.没有被添加到 url 的开头,并且 auth 拒绝来自没有 www 的 url 的服务请求。放在前面。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多