无法提交:// 请求,跨源请求仅支持 http://

Posted

技术标签:

【中文标题】无法提交:// 请求,跨源请求仅支持 http://【英文标题】:cannot file:// requests,cross origin request are only supported for http:// 【发布时间】:2017-09-18 19:38:11 【问题描述】:

我使用 Ionic html 元素开发了一个 Phonegap 应用程序。 android 应用程序一切正常,但在 ios 中却抛出错误:“无法访问跨源请求。”

虽然我在 config.xml 中添加了一个标签,即 allow-navigation,我在其中提供了我的 api url。但它仍然得到同样的错误。

尝试使用“”、“http:///*”,但仍然无法正常工作。

【问题讨论】:

这看起来是在 PhoneGap 中重新打开的问题:github.com/phonegap/phonegap-app-developer/issues/98 【参考方案1】:

您是否在使用适用于 iOS 的 WKWebView 插件?由于 CORS 限制,WKWebView 中有 known issues 带有 xhr 请求。有几种可能的解决方法。

您可以安装 local-webserver plugin,这样您的所有资产都通过 http:// 而不是 file:// URI 提供。

还有支持 XHR 请求的 WKWebView 插件的 Ionic's fork。

【讨论】:

不,我没有使用适用于 iOS 的 WKWebView 插件。 :( 我用的是apache cordova,但是为什么还是被屏蔽了?它说'阻止了原点为空的框架'。【参考方案2】:

对于 Cordova iOS 6+ 只需要安装以下插件。

cordova plugin add https://github.com/AraHovakimyan/cordova-plugin-wkwebviewxhrfix

此插件不依赖任何其他附加插件,也不需要额外的权限。

【讨论】:

【参考方案3】:

您可能正在使用 ionic-webview-plugin?

如果是这种情况,您必须删除本机 url 的 file:/// 部分。

必须删除 URL 的 file:// 部分才能正确加载资源。您可以手动执行此操作,但从 ionic-angular@3.2.0 开始,我们提供了一个可以自动处理此问题的快速函数。

window.Ionic.WebView.convertFileSrc()

https://blog.ionicframework.com/wkwebview-for-all-a-new-webview-for-ionic/

我自己只是偶然发现了这个:)

【讨论】:

以上是关于无法提交:// 请求,跨源请求仅支持 http://的主要内容,如果未能解决你的问题,请参考以下文章

Django AJAX 错误:仅协议方案支持跨源请求

跨源请求仅支持 HTTP

跨源请求仅支持 HTTP

Cordova iOS 跨源请求仅支持 HTTP

“仅 HTTP 支持跨源请求。”加载本地文件时出错

“仅 HTTP 支持跨源请求。”加载本地文件时出错