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,这是正确的,因为我还没有进行身份验证,但它没有显示登录(如我所愿)。

接下来我单击一个按钮来显示一个原生页面 (iOS),它是 url.com 的 UIWebView。这将通过以下方式显示登录页面:

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

我成功登录并看到了我期望的 url.com 的内容。然后我通过以下方式返回到非本地应用程序:

[NativePage showWebView:0];

现在我回到了非本地代码中,我在上面发送了相同的请求,我希望它不会返回 url.com 的内容,而是返回登录页面,因为我的请求没有附加标题,我认为非本机代码不应该知道我可能在 UIWebView 中制作的 cookie。

我的问题是这是如何工作的?我的工作灯的非本地部分是否了解在本地代码的 UIWebView 中创建的所有 cookie?

4

1 回答 1

0

首先让我说我的答案部分基于猜测,但我认为这是正在发生的事情:

由于您的 Native 页面使用 WebView 并且 Cordova 也使用 WebView,因此当您从 native 返回时,您的 Native 页面使用的任何标题和 cookie 都将可见,因为cookie 在不同的 UIWebViews 之间共享

如果您的本机页面使用本机 URL 请求方法或某些第三方/开源机制来连接到您的后端服务器,那么我认为您的非本机页面将无法看到标头和 cookie。

于 2013-11-04T23:24:19.433 回答