NativeScript 上的 Http 请求失败 Angular

Http request fail on NativeScript Angular

我有杂货教程,正在运行。然后我去用户服务并更改登录的URL:

login(user: User) {
let headers = new Headers();
headers.append("Content-Type", "application/json");

return this.http.post(
  "http://ws.u-vox.com/api/noauth/loginvenue",
  JSON.stringify({
    username: user.email,
    password: user.password,
  }),
  { headers: headers }
)
.map(response => response.json())
.do(data => {
  Config.token = data.Result.access_token;
})
.catch(this.handleErrors);
}

handleErrors(error: Response) {
console.log(JSON.stringify(error.json()));
return Observable.throw(error);
}

当我按下登录时,我会在终端上收到一条 HTTP 消息和一个 JSON。 但是我却变得一团糟,我不知道发生了什么。

CONSOLE LOG file:///app/shared/user/user.service.js:38:20: {"line":993,"column":38,"sourceURL":"file:///app/tns_modules/nativescript-angular/zone-js/dist/zone-nativescript.js","originalStack":"ZoneAwareError@file:///app/tns_modules/nativescript-angular/zone-js/dist/zone-nativescript.js:993:38\nfile:///app/tns_modules/tns-core-modules/http/http-request/http-request.js:86:37\nUIApplicationMain@[native code]\nstart@file:///app/tns_modules/tns-core-modules/application/application.js:211:26\nbootstrapApp@file:///app/tns_modules/nativescript-angular/platform-common.js:72:28\nbootstrapModule@file:///app/tns_modules/nativescript-angular/platform-common.js:60:26\nanonymous@file:///app/main.js:7:57\nevaluate@[native code]\nmoduleEvaluation@[native code]\n[native code]\npromiseReactionJob@[native code]","zoneAwareStack":"file:///app/tns_modules/tns-core-modules/http/http-request/http-request.js:86:37 [<root>]\nUIApplicationMain@[native code] [<root>]\nstart@file:///app/tns_modules/tns-core-modules/application/applicati
CONSOLE ERROR file:///app/tns_modules/nativescript-angular/zone-js/dist/zone-nativescript.js:569:26: Unhandled Promise rejection: Animation cancelled. ; Zone: <root> ; Task: null ; Value: Error: Animation cancelled. _rejectAnimationFinishedPromise@file:///app/tns_modules/tns-core-modules/ui/animation/animation-common.js:98:31 [<root>]

我的端点在 NativeScript 应用之外工作:

HTTP/1.1 200 OK
Server: nginx/1.10.3 (Ubuntu)
Content-Type: application/json
Transfer-Encoding: chunked
Connection: close
Cache-Control: no-cache, private
Date: Thu, 28 Dec 2017 15:00:39 GMT
Allow: POST

{"username ... }

我认为这个问题是由于 CORS(跨域)请求引起的。

首先确保您发出 post 请求的 url 启用了 CORS。

其次,如果您使用 iOS 到 运行 您的应用,请将以下内容添加到 /nativescript/App_Resources/iOS/info.plist:

<key>NSAppTransportSecurity</key>
<dict>
    <!--Include to allow all connections (DANGER)-->
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

对于android我认为有一个等效的设置。