Angular 9 выпуск CORS - PullRequest
       3

Angular 9 выпуск CORS

0 голосов
/ 09 марта 2020

Я перевожу свое приложение Angular с 8 на 9, и теперь у меня возникает проблема с CORS, которой у меня не было до миграции. Почему у меня нет этой проблемы с Angular 8?

  • веб-прогоны с ng serve на localhost: 4200
  • бэкэнд запускается на localhost (порт по умолчанию 80)

, поэтому я добавил файл proxy.conf.json в свое приложение:

{
    "/api/*": {
        "target": "http://localhost:80",
        "secure": false,
        "logLevel": "debug"
    }
}

и мой angular.json выглядит так:

 "serve": {
          "builder": "@angular-devkit/build-angular:dev-server",
          "options": {
            "browserTarget": "myapp:build",
            "proxyConfig": "src/proxy.conf.json"
          },

Пока я по-прежнему получить ошибку CORS при вызове бэкэнда. Что-нибудь еще, что я должен сделать?

Я также пытался запустить приложение с помощью следующей команды ng serve --proxy-config src/proxy.conf.json, но не повезло, та же ошибка.

[EDIT]

После добавив <add name="Access-Control-Allow-Origin" value="http://localhost:4200" /> к моей конфигурации бэкэнда, я получаю это:

Access to XMLHttpRequest at 'http://localhost/mybackend/token' from origin 'http://localhost:4200' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: The 'Access-Control-Allow-Origin' header contains multiple values 'http://localhost:4200, http://localhost:4200', but only one is allowed.

Но я добавил только один раз. Я не добавил ни по коду.

[EDIT 2]

моя конфигурация:

{
    "/api/*": {
        "target": "http://localhost:80/mybackend/",
        "pathRewrite": { "^/api": "" },
        "secure": false,
        "changeOrigin": true,
        "logLevel": "debug"
      }
}

, и я также удалил Access-Control-Allow-Origin из бэкэнда, как предложено @adrisons. Тем не менее я получаю эту же ошибку:

Access to XMLHttpRequest at 'http://localhost/mybackend/token' from origin 'http://localhost:4200' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

1 Ответ

0 голосов
/ 09 марта 2020

У меня была такая же проблема.

Вам необходимо добавить changeOrigin к прокси. И, возможно, pathRewrite, если вы хотите удалить /api/ из целевого URL.

  "/api/*": {
    "target": "http://localhost:80",
    "pathRewrite": { "^/api": "" },
    "secure": false,
    "changeOrigin": true,
    "logLevel": "debug"
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...