我有一个Ionic 3应用程序,它使用与我以前的离子应用程序相同的API。
登录时我现在收到以下错误:
状态响应:URL为0:null
我环顾四周,每个人都在服务器端一直提到CORS问题,但由于我的API以前工作过,现在仍在现有应用程序中,所以情况并非如此。
这是我的登录信息:
login(credentials) {
return new Promise((resolve, reject) => {
this.http.post(this.global.base() + 'login', JSON.stringify(credentials), { headers: this.contentHeader })
.subscribe(res => {
resolve(res.json());
}, (err) => {
reject(err);
});
});
}
我的配置xml(为了说明而修剪):
<content src="index.html" />
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<plugin name="cordova-plugin-device" spec="^1.1.4" />
<plugin name="cordova-plugin-ionic-webview" spec="^1.1.16" />
<plugin name="cordova-plugin-splashscreen" spec="^4.0.3" />
<plugin name="cordova-plugin-whitelist" spec="^1.3.2" />
<plugin name="cordova-sms-plugin" spec="^0.1.11" />
<plugin name="ionic-plugin-keyboard" spec="^2.2.1" />
<engine name="ios" spec="~4.4.0" />
我的index.html:
<meta name="viewport" content="viewport-fit=cover, width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
<meta name="format-detection" content="telephone=no">
<meta name="msapplication-tap-highlight" content="no">
<link rel="icon" type="image/x-icon" href="assets/icon/favicon.ico">
<link rel="manifest" href="manifest.json">
<meta name="theme-color" content="#4e8ef7">
<!-- add to homescreen for ios -->
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
我的设置:
cli packages: (/usr/local/lib/node_modules)
@ionic/cli-utils : 1.14.0
ionic (Ionic CLI) : 3.14.0
global packages:
cordova (Cordova CLI) : 7.0.1
local packages:
@ionic/app-scripts : 3.0.1
Cordova Platforms : ios 4.4.0
Ionic Framework : ionic-angular 3.7.1
System:
ios-deploy : 1.9.2
Node : v7.7.1
npm : 4.1.2
OS : macOS Sierra
Xcode : Xcode 9.0.1 Build version 9A1004
Misc:
backend : legacy
有人能指出我正确的方向吗?
答案 0 :(得分:0)
这是因为ios上的WKWebView。 WkWebView包含CORS并且没有办法禁用它,所以你需要将api上的原点列入白名单 - 访问 - Control-Allow-Origin: *
。如果您不拥有api,则可以使用本机http插件。
此处有更多信息https://blog.ionic.io/wkwebview-for-all-a-new-webview-for-ionic/
答案 1 :(得分:0)
我遇到了同样的问题,我刚刚检查了uri rest api,它以'/'结尾,我删除了它,一切恢复正常