通过JSONP检查会话Cookie

时间:2012-12-06 13:06:58

标签: php javascript jquery ajax bookmarklet

我创建了一个书签,可以在点击时从页面中提取所有图像,并通过JSONP将img的src发送回另一个(远程)服务器。

问题:远程服务器必须检查会话身份验证cookie,以确保在将img src添加到数据库之前登录发送JSONP请求的用户。我可以通过JSONP检查会话cookie,现在如果用户没有登录,我想让用户在此时登录,我该如何呈现登录屏幕?

此外,通过JSONP检查会话cookie是否存在安全风险?

书签的jQuery

我使用.getJSON执行JSONP的方式可能不对。

$('.thing').on('click', function() {
    var jsonp_url = 'http://mydomain.com/bookmark.js?callback=?';
    var data = {
        type: 'addToLibrary',
        thingImgSrc: 'http://google.com/someimage.jpg';
    };
    $.getJSON(jsonp_url, data, function(resp) {
        // console.log('done');
    });
});

登录后的服务器响应

addToLibrary(["1"]) 

服务器响应,如果未登录

addToLibrary(["0"])

回调功能

addToLibrary = function(data) {
    if(data == '0') {
        // show login screen
    } else {
        // show OK screen
    }
}

用户登录的想法

  1. 收到["0"]表示错误后,弹出一个显示登录表单的窗口,登录将正常完成,因为弹出窗口包含来自远程服务器的页面。
  2. 在收到表示错误的["0"]时,在包含登录表单的当前页面上弹出一个AJAX样式的模式框,登录将通过JSONP完成。

1 个答案:

答案 0 :(得分:1)

为什么不发回一个对象?

addToLibrary( { "result" : ["registereduser@gmail.com"] } );
addToLibrary( { "error" : true, message : "must log in"  } ); 

在您的函数中,检查错误或结果并以此方式处理。不知道Zero是什么。

function addToLibrary(resp) {
    if (resp.error) {
        showLoginPrompt();
    } else {
        addItems(resp.result);
    }
}