Cordova iOS错误:访问控制不允许原点为null允许原点

Cordova iOS错误:访问控制不允许原点为null允许原点,ios,cordova,xmlhttprequest,cors,cordova-plugins,Ios,Cordova,Xmlhttprequest,Cors,Cordova Plugins,我已将Cordova iOS应用程序升级至最新版本: iOS 4.1.0 Cordova 6.0.0 我已经更新了插件,还添加了新的WKWebView引擎插件 我已将我的内容安全策略添加到index.html文件: <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self'

我已将Cordova iOS应用程序升级至最新版本:

iOS 4.1.0
Cordova  6.0.0
我已经更新了插件,还添加了新的WKWebView引擎插件

我已将我的内容安全策略添加到index.html文件:

<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' 'unsafe-inline' data:;connect-src 'self' https://mydomain/myservice/; plugin-types application/pdf">
我直接在设备上构建并运行应用程序,并使用Safari Develop查看错误

我有一个Android版本的应用程序,有自己更新的基本代码,运行良好

我进一步的研究表明,是新的WKWebView引擎插件导致了这个问题。但我发现的唯一建议是在爱奥尼亚论坛中,我不会在这个构建中使用爱奥尼亚

为了确认,以下是我在调试中从Safari获得的错误消息:

[Error] Failed to load resource: the server responded with a status of 405 (Method Not Allowed) ([my thing], line 0)
[Error] Failed to load resource: Origin null is not allowed by Access-Control-Allow-Origin. ([my thing], line 0)
[Error] XMLHttpRequest cannot load https://[mydomain]/[my service]/[my thing]. Origin null is not allowed by Access-Control-Allow-Origin.

@jcesarmobile是正确的。仅仅将
httpProtocol
添加到我的
web.config
是不够的。我还必须将以下代码添加到
global.asax应用程序\u BeginRequest

HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*")
    If HttpContext.Current.Request.HttpMethod.Equals("OPTIONS") Then
        HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "POST, PUT, DELETE")
        HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept")
        HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000")
        HttpContext.Current.Response.End()
    End If
尝试以下解决方案:

在代码中搜索以下行:(可能在多个文件中,所以对所有文件都执行此操作)
WKWebViewConfiguration*configuration=[[WKWebViewConfiguration alloc]init]

并在其后面添加以下两行:

[configuration.preferences setValue:@TRUE forKey:@"allowFileAccessFromFileURLs"];
[configuration setValue:@"TRUE" forKey:@"allowUniversalAccessFromFileURLs"];

服务器上似乎没有正确设置CORS。你的请求有身份验证头吗?没有。我遗漏了什么。在下面的答案中添加了它。这就像一个符咒。你能解释一下根本原因吗?我不是iOS原生应用程序开发人员。非常感谢。是否可以使用config.xml执行此操作?
Allow Arbitrary Loads : Yes
Exception Domains
    [mydomain]
        NSIncludesSubdomains : Yes
        NSTemporaryExceptionAllowsInsecureHTTPLoads : YES
        NSTemporaryExceptionMinimumTLSVersion : TLSv1.1
[Error] Failed to load resource: the server responded with a status of 405 (Method Not Allowed) ([my thing], line 0)
[Error] Failed to load resource: Origin null is not allowed by Access-Control-Allow-Origin. ([my thing], line 0)
[Error] XMLHttpRequest cannot load https://[mydomain]/[my service]/[my thing]. Origin null is not allowed by Access-Control-Allow-Origin.
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*")
    If HttpContext.Current.Request.HttpMethod.Equals("OPTIONS") Then
        HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "POST, PUT, DELETE")
        HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept")
        HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000")
        HttpContext.Current.Response.End()
    End If
[configuration.preferences setValue:@TRUE forKey:@"allowFileAccessFromFileURLs"];
[configuration setValue:@"TRUE" forKey:@"allowUniversalAccessFromFileURLs"];