ионный почтовый запрос заблокирован cors, пока postman работает нормально Ionic 4

#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');