0

クリックするとページからすべての画像を抽出し、srcJSONPを介してimgを別の(リモート)サーバーに送り返すブックマークを作成しました。

問題:リモートサーバーは、セッション認証Cookieをチェックしsrcて、データベースにimgを追加する前に、JSONPリクエストを送信するユーザーがログインしていることを確認する必要があります。JSONPを介してセッションCookieを確認できます。ユーザーがログインしておらず、この時点でユーザーにログインを許可したい場合、ログイン画面をどのように表示すればよいですか?

また、JSONPを介してセッションCookieをチェックすることにセキュリティ上のリスクはありますか?

ブックマークのjQuery

私が.getJSONJSONPを行うために使用している方法はおそらく間違っています`

$('.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 に答える