[英]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.