При получении запроса с защищенного URL-адреса появляется сообщение об ошибке Http для https://www.google.com: 0 Неизвестная ошибка.
Я пытаюсь проверить мобильное приложение ionic / angular , Когда я пытался с http запросами, у меня была проблема с Android 9, но с Android 7 работала нормально. В любом случае мне нужно установить свой бэкэнд на сервер publi c https. Итак, сейчас я тестирую по запросу https, и ни одна из версий 7 и 9 Android не работает.
Я использую Angular 7,
"@ionic/angular": "^4.6.1",
"@ionic-native/core": "^5.0.0",
"rxjs": "~6.5.1"
Я сделал эти небольшие функции в Чтобы упростить мою проблему.
внутри моего html файла у меня есть этот код:
myFile. html
<ion-button
(click)="onStartTest()"
>Click me</ion-button>
<p id="testme"></p>
myFile.page.ts
onStartTest() {
this.taskService.onTest().subscribe(result => {
document.getElementById('testme').innerText = 'result ' + result;
console.log(result);
}, error => {
document.getElementById('testme').innerText = error.message;
console.log('Problem ', error.message);
});
}
myTask.service.ts
onTest() {
return this.http.get('https://www.google.com').pipe(
catchError(err => {
return throwError(err);
})
);
}
Сначала я попробовал URL-адрес моего сервера, но изменил его на "https://www.google.com", чтобы убедиться, что backend правильный.
Также у меня есть файл interceptors.ts, который я использую для аутентификации, но я не авторизован, когда выполняю функцию onStartTest (), но я собираюсь поделиться им anw.
interceptors.ts
import {Injectable} from '@angular/core';
import {HttpEvent, HttpHandler, HttpInterceptor, HttpRequest} from '@angular/common/http';
import {Observable} from 'rxjs';
@Injectable()
export class TokenInterceptor implements HttpInterceptor {
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const token = localStorage.getItem('auth_token');
let newHeaders = req.headers;
if (token) {
console.log(token);
newHeaders = newHeaders.set('Authorization', 'Token ' + token);
const modified = req.clone({
headers: newHeaders
});
return next.handle(modified);
} else {
newHeaders = newHeaders.set('Content-Type', 'application/json');
const modified = req.clone({
headers: newHeaders
});
return next.handle(modified);
}
}
}
Я думаю, что это необходимые файлы для совместного использования для решения этой проблемы. Я также проверил URL Google с почтальоном, просто чтобы убедиться, что я должен получить статус 200
Я также знаю, что есть " директива add_header "(nginx), которая добавляет 'Allow-access-control-origin', когда код ответа равен 20x или 30x. Согласно моему скриншоту с Почтальоном, Google отвечает 200 статусом, но мое приложение все еще получает ошибку статуса 0.
Игнорировать первую ошибку. Это функция, которую я использую с http, когда приложение запускается. Сейчас я тестирую https.
Я поверхностно пытался использовать ioni c -нативная библиотека HTTP, но мое приложение полностью упало.
Я также выполняю команду ionic serve --ssl
, но все еще ничего.
Я где-то читал, что для безопасного соединения мне нужен сертификат, но я понял что это работа сервера.
Я попытался запросить у Dark Sky у Vanilla JavaScript, и он работает нормально. Так что что-то не так с угловой / ioni c стороной, а не с серверной.
Чего мне не хватает? Мне действительно нужно исправить эту проблему в ближайшее время! Я хочу отправить защищенный запрос на URL-адрес https и получить соответствующий ответ.