"http://localhost:8100" заблокирован из-за ошибки политики CORS

У меня есть остальные API в php, и я пытаюсь получить доступ к ионному приложению, но получаю ошибку перекрестной политики.

это мои заголовки php, которые я устанавливаю

  <?php
    header('Access-Control-Allow-Origin: *');
    header('Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS');
    header('Access-Control-Allow-Headers: Content-Type,Accept,Authorization');

Это мой ионный код, откуда я вызываю API.

import { HttpClient } from '@angular/common/http'

constructor(public http: HttpClient
  ){}
 login(body){
     return this.http.post(SERVER_URL+LOGIN,body);

  }

И это ошибка, которую я получаю

Access to XMLHttpRequest at 'http://myIP_ANd_Port/icrm_mobile_mar12/index.php/login_api' from origin 'http://localhost:8100' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.

person nitish    schedule 14.03.2019    source источник
comment
используйте расширение Cors, например это   -  person h_w    schedule 14.03.2019
comment
Это ионное приложение, которое я тестирую на мобильных устройствах.   -  person nitish    schedule 14.03.2019
comment
разрешили ли вы доступ к перекрестному происхождению в своем API   -  person h_w    schedule 14.03.2019
comment
да, я делаю это перед своим классом php   -  person nitish    schedule 14.03.2019
comment
проверьте этот ответ и это   -  person h_w    schedule 14.03.2019


Ответы (2)


Вы должны иметь возможность отвечать на запросы, используя метод OPTIONS в вашем PHP-приложении.

Ваш браузер или приложение отправляет запрос OPTIONS (предварительная проверка), который не обслуживается.

Для получения дополнительной информации вы можете увидеть этот ответ: CORS с заголовками php

person jbernach    schedule 14.03.2019

  1. Один из способов переопределить политику CORS — установить расширение. Он добавляет заголовок Allow-Control-Allow-Origin: * ко всем ответам, которые получает ваш браузер.
  2. Еще одна вещь, которую вы можете сделать, это указать в своем запросе, что вы хотите обойти механизм защиты CORS. Вы можете сделать это, если используете Fetch API, установив для параметра режима значение no-cors: Like fetch('http://localhost:8080/posts', { mode: 'no-cors' });
person GrigorAtaryan    schedule 16.05.2019