Xamarin.iOS WebViewRenderer如何允许自签名证书?

时间:2016-10-11 06:13:05

标签: ios objective-c xamarin xamarin.ios xamarin.forms

创建一个需要访问自签名网站的Xamarin表单应用。
我知道的唯一方法是为每个平台创建自定义Web视图渲染器。
在Android上,这可以通过覆盖WebViewClient中的OnReceivedSslError来完成。

问题是我们如何才能在iOS上实现这一点?

我已经尝试过覆盖NSUrlRequest:

public class MyUrlRequest : NSUrlRequest
{
    public MyUrlRequest(NSUrl url) : base(url)
    {
    }

    public MyUrlRequest(IntPtr p) : base(p)
    {
    }

    [Export("allowsAnyHTTPSCertificateForHost:")]
    public static bool Allow(string host)
    {
        return true;
    }

}

使用LoadRequest调用自定义请求,但似乎仍无效。

1 个答案:

答案 0 :(得分:0)

要在 iOS 中允许自签名证书,您可以将以下代码添加到 Info.plist 文件中:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

或者您可以指定每个域:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>[ENTER YOUR BASE URL HERE]</key>
        <dict>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSAllowsArbitraryLoads</key>
            <true/>
        </dict>
    </dict>
</dict>

有关详细信息,请参阅此post