簡體   English   中英

在Mac OS X應用程序中使用WebView查看HTTPS頁面

[英]View HTTPS page with WebView in Mac OS X application

我正在嘗試使用StackExchange API的隱式身份驗證,因此我需要將用戶發送到https://www.stackexchange.com/oauth?client_id=...&scope=...&redirect_uri=... (使用實際值而不是“ ...”)。 容易,只需在Interface Builder中拖出一個WebView並從WebFrameLoadDelegate協議中實現-webView:didFinishLoadForFrame:即可跟蹤我們是否已經位於redirect_uri 這一工程完全按照我想讓它。 但是WebView內部沒有。 來自stackexchange.com/oauth的錯誤頁面:

應用程序登錄失敗

登錄到應用程序時發生錯誤。

錯誤詳情:

錯誤:invalid_request
錯誤說明:OAuth請求必須通過HTTPS

但是我以https://開頭了URL:

- (void)awakeFromNib {
    NSString *oauthAddress = @"https://www.stackexchange.com/oauth?client_id=...&scope=...&redirect_uri=...";
    [loginWebView setMainFrameURL:oauthAddress];
}

我找不到任何來源說明您必須做其他事情才能在標准WebView上啟用HTTPS。

這是由WebView內部造成的: -webView:didFinishLoadForFrame: I NSLog() '當前URL:

- (void)webView:(WebView *)webView didFinishLoadForFrame:(WebFrame *)webFrame {
    NSString *currentURL = [[[[webFrame dataSource] request] URL] absoluteString];

    NSLog(@"-webView:didStartProvisionalLoadForFrame:");
    NSLog(@"Current URL: %@", currentURL);

    if ([currentURL hasPrefix:@"https://stackexchange.com/oauth/login_success"]) {
        NSLog(@"We did login!");
    }
}

輸出:

2013-03-05 15:31:55.493 MacOverflow[2164:a0f] -webView:didStartProvisionalLoadForFrame:
2013-03-05 15:31:55.495 MacOverflow[2164:a0f] Current URL: http://stackexchange.com/oauth?client_id=...scope=...&redirect_uri=...

什么?! WebKit從URL的協議部分刪除了“ s”! 如何阻止WebKit這樣做? 我在WebView(帶有Cmd + f)上的Apple文檔中搜索了“ https”(0個匹配項),“ ssl”(0個匹配項)甚至“安全”(再次0個匹配項)。 我有點卡在這里,但一定有可能。 提供如此復雜的瀏覽器控件將是荒謬的,但是迫使開發人員編寫一個副本來支持https (在IMO中這是今天很常見的)!

如何使用WebKit的WebView發出HTTPS請求?

這與WebKit不相關。 刪除www。 從您的URL像https://stackexchange.com/oauth這樣,您就可以了。 至少對我有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM