Po prostu próbuję wykonać połączenie http w moim projekcie IONIC 2. Po uruchomieniu jonowego służyć działa dobrze. Ale kiedy uruchomię jonowy bieg anroid, aby uruchomić go na moim urządzeniu, daje mi to 403 (zabronione) odpowiedzi.Wykonywanie połączenia HTTP POST w Ionic 2 daje zabronioną odpowiedź
To jest moje PaymentService.ts, w którym zostało dokonane wezwanie http
import {Http, Headers, RequestOptions} from '@angular/http';
import 'rxjs/add/operator/map';
import { Injectable } from '@angular/core';
@Injectable()
export class PaymentService {
static get parameters() {
return [[Http]];
}
constructor(private http:Http) {}
postToPaymentApi(data) {
let headers: Headers = new Headers()
headers.set('Content-type', 'application/x-www-form-urlencoded')
let options = new RequestOptions({headers: headers})
var response = this.http.post("http://test/url",data,options).map(res => res.json());
return response;
}
}
}
Aby przezwyciężyć ten problem Próbowałem kilka rzeczy, jak
- Run Cordova plugin dodać Cordova-plugin- biała lista
- Dodano tę linię w moim pliku config.xml
<meta http-equiv="Content-Security-Policy" content="default-src *; img-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
- . link ->https://github.com/apache/cordova-plugin-whitelist, aby dodać
<access origin>
jako znaczniki *,<allow-navigation>
,<allow-intent>
o określonych atrybutach. - Próbowano dodać proxyUrl jak wspomniano tu http://blog.ionic.io/handling-cors-issues-in-ionic/
ale w moim przypadku nie Powyższe rozwiązanie działa.
Kiedy uderzę połączenie post z moim android urządzenia pojawia się następujący komunikat o błędzie:
{"_body":"",
"status":403,
"ok":false,
"statusText":"Forbidden",
"headers":{"Date":["Wed","30 Nov 2016 09:28:53 GMT"],
"Content-Length":["0"]},
"type":2,
"url":"http://test/url"}
Mam następujący jonowej informacji:
Cordova CLI: 6.4.0
Ionic Framework Version: 2.0.0-rc.3
Ionic CLI Version: 2.1.12
Ionic App Lib Version: 2.1.7
Ionic App Scripts Version: 0.0.45
ios-deploy version: Not installed
ios-sim version: Not installed
OS: Linux 4.4
Node Version: v7.2.0
Xcode version: Not installed
Ktoś z jakiegoś rozwiązania?
Z góry dziękuję.
Tak, jestem wysłanie poprawne nagłówki. Ta sama prośba działa dobrze z serwerem jonowym (na przeglądarce), ale nie z ** jonowym uruchomieniem androida ** (to jest na rzeczywistym urządzeniu) Próbowałem powyższego przykładu, ale wciąż ten sam problem –
Spróbuj "bieg jonowy" android -l -s -c' da ci lepszy log konsoli, jest tam także 'chrome: // inspect' i tam są inspekcje urządzeń – flakerimi
yes @ flakerimi Próbowałem już' chrome: // inspect' już, ale to jest niewiele pomocy. W rzeczywistości przyczyną problemu jest pochodzenie: file: // 'które nie jest dozwolone od strony serwera. –