IONIC 3 - IOS: [Ошибка] Поле заголовка запроса Content-Type не разрешено Access-Control-Allow-Headers - PullRequest
2 голосов
/ 25 июня 2019

Я пытаюсь отладить ионное приложение в Mac:

$ ionic cordova emulate ios -- --buildFlag="-UseModernBuildSystem=0" --debug

В одном из запросов API SERVER (.NET) я получаю ошибку:

Поле заголовка запроса Content-Type не разрешено Access-Control-Allow-Headers

enter image description here

login(login: LoginModel | null): Observable<LoginInfo | null> {
  let url_ = this.baseUrl + "/API/Login/Login";
  url_ = url_.replace(/[?&]$/, "");

  const content_ = JSON.stringify(login);

  let options_ : any = {
    body: content_,
    observe: "response",
    responseType: "blob",
    headers: new HttpHeaders({
      "Content-Type": "application/json", 
      "Accept": "application/json"
    })
  };

  return this.http.request("post", url_, options_).flatMap((response_ : any) => {
    return this.processLogin(response_);
  }).catch((response_: any) => {
    if (response_ instanceof HttpResponseBase) {
      try {
        return this.processLogin(<any>response_);
      } catch (e) {
        return <Observable<LoginInfo | null>><any>Observable.throw(e);
      }
    } else
      return <Observable<LoginInfo | null>><any>Observable.throw(response_);
   });
 }

Ответы [ 2 ]

0 голосов
/ 26 июня 2019

Вы можете установить некоторые конфиги на вашем express.js сервере.

app.use(function(req, res, next) {
  var allowedOrigins = [
    'http://localhost',
    'http://localhost:8000',
    'http://127.0.0.1',
    'http://127.0.0.1:8000',
    'http://yourdomain.com',
  ];
  var origin = req.headers.origin;
  if (allowedOrigins.indexOf(origin) > -1) {
    res.setHeader('Access-Control-Allow-Origin', origin);
  }
  res.header('Access-Control-Allow-Methods', 'GET, PUT, POST, DELETE, OPTIONS');
  res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
  res.header('Access-Control-Allow-Credentials', true);
  next();
});
0 голосов
/ 26 июня 2019

Так что правильно установить Access-Control-Allow-... на сервере.

  • Safari не позволяет *, как:
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "*");

Правильная настройка :

HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...