I have a scenario where the user needs to login using SSO, and then the server will use a url-scheme to communicate with my app. If I'm opening an external browser - everything works great. But I tried to use an embedded browser instead (WebView), and for some reason I'm getting this unclear error:
[ProcessSwapping] 0x11fd863f0 - ProvisionalPageProxy::didFailProvisionalLoadForFrame: pageProxyID=23 webPageID=34, frameID=3, navigationID=4
At the Console I saw more similar issues, like:
0x11fd863f0 - ProvisionalPageProxy::didFailProvisionalLoadForFrame: pageProxyID=23 webPageID=34, frameID=3, navigationID=4
<nw_activity 16:1 [E08406EE-456B-4302-913A-6C46229FDFC7] (reporting strategy default) complete (reason cancelled)> complete with reason 4 (cancelled), duration 599ms
How can I tell what's the problem and how to fix it?
P.S In order to debug/fix it, I tried to implement the WKNavigationDelegate protocol, so I could see that I'm getting this error as well:
error:Error Domain= Code😮 "Redirection to URL with a scheme that is not HTTP(S)" UserInfo={_WKRecoveryAttempterErrorKey=<WKReloadFrameErrorRecoveryAttempter: 0x600002b1c200>, NSErrorFailingURLStringKey=mycustomurlscheme://someresponse
I'm not sure why the url scheme must be http(s) in this case.
For security reasons, the Fetch standard doesn't allow http(s) servers to redirect to non-http(s) urls.
I see a few obvious options, though there are probably more.
-
You could leave the server response as-is, capture the error, and then load the custom URL scheme URL yourself.
-
If you have the flexibility to change the server's response, you could have it communicate the target URL differently (as a query parameter in the URL string, perhaps) and have your app load it manually.