0

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

问题:远程服务器必须检查会话身份验证 cookie 以确保发送 JSONP 请求的用户在将 img 添加src到数据库之前已登录。我可以通过 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 完成。
4

1 回答 1

1

为什么不寄回一个对象?

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

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

function addToLibrary(resp) {
    if (resp.error) {
        showLoginPrompt();
    } else {
        addItems(resp.result);
    }
}
于 2012-12-06T13:15:12.570 回答