#angular #cors #ionic4
#angular #cors #ionic4
Вопрос:
Я использую ionic 4 с angular 7. Есть запрос post, который продолжает вызывать следующую ошибку, но когда я тестирую этот запрос post в Postman, он работает нормально:
Доступ к XMLHttpRequest по адресу ‘https://examplecode/backend /‘ from origin ‘http://localhost ‘ был заблокирован политикой CORS: Ответ на предполетный запрос не проходит проверку контроля доступа: заголовок ‘Access-Control-Allow-Origin’ отсутствует на запрошенном ресурсе.
мой запрос post:
import { HttpClient, HttpHeaders } from '@angular/common/http';
...
sendCodeToServer(data) {
this.http.post(endpoindURL, data, {
headers: new HttpHeaders({
'Content-Type': 'application/json'
})
}).toPromise().then(
(data) => {
console.log(data);
}).catch((err) => {
console.log(err);
});
все, что я отправляю, это { «id»: 1111111 }.
Как я уже сказал, он отлично работает в Postman, но в моем приложении я продолжаю получать ошибку. На сервере уже есть несколько мер, поэтому этого не произойдет
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
header("Access-Control-Allow-Methods: POST");
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");
}
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Headers: *");
Не уверен, как это исправить, серверы выглядят нормально, и запрос выглядит нормально, и работает в postman также, просто никогда не работает в мобильном приложении.
Комментарии:
1. CORS не применяется к postman, вы не увидите там ошибку. На каком языке / платформе реализован ваш сервер?
2. @Jota. Toledo php
3. Не могли бы вы добавить SS неудачного HTTP-запроса с его деталями? (Просмотр сетевых вкладок в отладчике вашего браузера)
4. Что @Jota. Сказал Толедо. В частности, вы, вероятно, захотите проверить код состояния HTTP ответа. Если это ошибка 4xx или 5xx, то, скорее всего, ответ отправляется без пользовательских заголовков ответа, настроенных вашим кодом сервера.
5. @Jota. Toledo это запрещенная ошибка 403, по-видимому, она работает на других телефонах, но не на моем, мой телефон huawei 20 lite matte и имеет версию 8.1.0, я не уверен, почему он просто не будет работать с моим телефоном
Ответ №1:
Мои заголовки в PHP, которые я использовал с Ionic. Надеюсь, это поможет.
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: *');
header('Access-Control-Allow-Headers: Content-Type');
header('Content-Type: application/json');