0

私は Worklight 6.0 を使用しており、この場合は iOS7 でテストしています。

Worklight で saml 2.0 SSO をセットアップしようとしていますが、成功したように見えますが、どのように機能するのかわかりません... 最初に、アプリに次のように URL へのアクセスを試みさせます。

WLJQ.ajax({
    url: 'url.com',
    type: 'GET',
    xhrFields: {
        withCredentials: true
    },
    success: function(data, status, xhr) {
        console.log(data);
    },
    error: function(result) {
        console.log("error");
        console.log(result);
    }
});

リクエストは成功し、ログイン ページの URL が返されます。これはまだ認証していないため正しいのですが、(意図したとおり) ログインが表示されません。

次に、ボタンをクリックして、url.com の UIWebView であるネイティブ ページ (iOS) を表示します。これにより、次の方法でログイン ページが表示されます。

WL.NativePage.show('LoginController', backFromNativeLoginPage, params);

ログインに成功し、期待どおりの url.com のコンテンツが表示されます。次に、次の方法で非ネイティブ アプリに戻ります。

[NativePage showWebView:0];

非ネイティブ コードに戻ったので、上記と同じリクエストを送信しましたが、url.com のコンテンツではなく、ログイン ページが返されることを期待しています。これは、リクエストにヘッダーが添付されておらず、非ネイティブ コードは、UIWebView で作成した可能性のある Cookie を認識してはいけません。

私の質問は、これがどのように機能するかです。ワークライトの非ネイティブ部分は、ネイティブ・コードの UIWebView で作成されたすべての Cookie を認識していますか?

4

1 に答える 1

0

私の答えは部分的に憶測に基づいていると言うことから始めましょうが、これが起こっていることだと思います:

ネイティブ ページは WebView を使用しており、Cordova も WebView を使用しているため、ネイティブ ページが使用しているヘッダーと Cookie は、ネイティブから戻ったときに表示されます。これは、 Cookie が異なる UIWebViews 間で共有されているためです。

ネイティブ ページがバックエンド サーバーに接続するためにネイティブ URL リクエスト メソッドまたはサード パーティ/オープン ソース メカニズムを使用している場合、非ネイティブ ページはヘッダーと Cookie を表示できないと思います。

于 2013-11-04T23:24:19.433 に答える