В Angular 7 используется HTTP API для POST и отсутствуют заголовки ошибок команд - PullRequest
0 голосов
/ 07 февраля 2019

Я использую Angular 7 и Orientdb 3.0.14.Я хочу подключиться к моей базе данных demodb в localhost.

это мой код для команды:

command(statement: string, success: (data: any) => void, error: (err: any) => void): void {
    this.url = this.url + 'sql/-/-1';
    this.headers = new HttpHeaders()
      .set('Access-Control-Allow-Origin', 'http://localhost:4200')
      .set('Access-Control-Allow-Methods', 'POST, GET, OPTIONS, DELETE')
      .set('Access-Control-Max-Age', '3600')
      .set('Access-Control-Allow-Credentials', 'true')
      .set('Access-Control-Allow-Headers', 'Content-Type, authorization')
      .set('Authorization', 'Basic ' + btoa(this.username + ':' + this.password))
      .set('Content-Type', 'application/json');
      console.log(this.headers);
    this.http.post(this.url,
      JSON.stringify({'command': statement}),
      {headers: this.headers})
      .toPromise()
      .then(success)
      .catch(error);

, но у меня эта ошибка на консоли:

HttpHeaders {normalizedNames: Map (0), lazyUpdate: Array (7), заголовки: Map (0), lazyInit: HttpHeaders} заголовки:

Размер карты (7): (...) proto : Map [[Entries]]:

Array (7) 0: {"access-control-allow-origin" => Array (1)} ключ: значение "access-control-allow-origin": ["http://localhost:4200"]1: {" access-control-allow-method "=>

Array (1)} ключ: значение" access-control-allow-Methods ": [" POST, GET, OPTIONS, DELETE "]

2: {" access-control-max-age "=> Array (1)} ключ: значение" access-control-max-age ": [" 3600 "]

3: {"access-control-allow-credentials" => Array (1)} ключ: "access-control-allow-credentials" значение: ["true"]

4:{"access-control-allow-headers" => Array (1)} ключ: "access-control-allow-headers" значение: ["Content-Type, authorization"]

5: {"авторизацияКлюч "=> Array (1)}: значение" полномочия "e: ["Basic YWRtaW46YWRtaW4 ="]

6: {"content-type" => Array (1)} ключ: "content-type" значение: ["application / json"] длина: 7lazyInit:nulllazyUpdate: nullnormalizedNames: Map (7) {"access-control-allow-origin" => "Access-Control-Allow-Origin", "access-control-allow-method" => "Access-Control-Allow-Methods", "access-control-max-age" => "Access-Control-Max-Age", "access-control-allow-credentials" => "Access-Control-Allow-Credentials", "access-control-allow-headers "=>" Access-Control-Allow-Headers ",…}

proto : Объект core.js: 16819 Angular работает в режиме разработки.Вызовите enableProdMode (), чтобы включить производственный режим.localhost /: 1 Доступ к XMLHttpRequest в «http://localhost:2480/command/demodb/sql/-/-1' от источника» http://localhost:4200' был заблокирован политикой CORS: Ответ на предпечатный запрос не проходит проверку контроля доступа: Нет 'Access-Control-AllowЗаголовок -Origin 'присутствует в запрашиваемом ресурсе.

см. Access-Control_allow-Origin находится в заголовке ... но OriendDB

не может помочь мне?спасибо.

1 Ответ

0 голосов
/ 07 февраля 2019

В OrientDB CORS не включен по умолчанию, и способ, которым вы пытаетесь достичь, бесполезен.

Добавить эту запись в config/orientdb-server-config.xml

<parameter name="network.http.additionalResponseHeaders" value="Access-Control-Allow-Origin: * ;Access-Control-Allow-Credentials: true;Access-Control-Allow-Headers: Content-Type;Access-Control-Allow-Methods: POST, GET, DELETE, HEAD, OPTIONS, PATCH, CONNECT, TRACE " />

выше

<parameter value="utf-8" name="network.http.charset"/>

Также важно не использовать пробел после двоеточия ;

...