Ошибка в почтовом запросе к neo4j с использованием Angular HttpClient - PullRequest
0 голосов
/ 04 октября 2019

Я пытаюсь сделать пост-запрос к базе данных neo4j, но получаю сообщение об ошибке в консоли.

Ошибка ниже:

Доступ к XMLHttpRequest по адресу http://localhost:7474/db/data/cypher' изorigin 'http://localhost:4200' был заблокирован политикой CORS: в запрошенном ресурсе отсутствует заголовок' Access-Control-Allow-Origin '.

и ответ на вкладке сети:

{
  "errors" : [ {
    "message" : "Invalid username or password.",
    "code" : "Neo.ClientError.Security.AuthorizationFailed"
  } ]
}

мой код сценария типа:

const headers = new HttpHeaders().set('Content-Type', 'application/json');
    headers.set('Accept', 'application/json; charset=UTF-8')
    headers.set('Authorization', 'Basic ' + btoa('username=rbs:password=rbs'))
    this.httpService.post("http://localhost:7474/db/data/cypher", {
      "query": "match (a:Product) -->(b:Functions)--> (c:Subfunctions) return a,b,c"
    },
      { headers }).subscribe(
        data => {
          debugger
          this.graphdata = data;

        },
        (err: HttpErrorResponse) => {
          debugger
          console.log(err.status);
        }
      );

1 Ответ

0 голосов
/ 04 октября 2019

Это проблема CORS. Это происходит, когда вы пытаетесь вызвать API или другую службу, и у вас есть другой хост или порт (https://en.wikipedia.org/wiki/Cross-origin_resource_sharing)

Попробуйте решить, включив прокси-сервер в свой Angular, как это сообщение (https://www.codeyourthought.com/angular/proxy-to-make-http-call-in-angular/)

Для моего приложения Angular у меня есть один файл с именем "proxy.conf.json" с этой конфигурацией:

{
  "/api/*": {
    "target": "http://localhost:8080",
    "secure": false,
    "changeOrigin": true,
    "logLevel": "debug"
  }
}

Я звоню в npm, начнем с этого:

"start": "ng serve  --proxy-config proxy.conf.json",

И моймаршруты к бэкэнду были с этой базой, настроенной в файле среды "environment.ts"

export const environment = {
  production: false,
  apiBaseUrl: 'http://localhost:4200/api/'
};

Другой способ решить эту проблему - установить расширение CORS в Chrome или Firefox

Надеюсь, это поможет вам!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...