Сбой дифференциальной загрузки Angular 8 из-за проблем аутентификации с ядром dotnet - PullRequest
1 голос
/ 26 июня 2019

Я недавно обновил с Angular 7 до Angular 8, используя ng update. Следуя ожидаемому пути миграции без проблем, я собрал и развернул. Все работало замечательно, пока я не начал проверять другие версии браузера и понял, что некоторые из них получают 401 unauthorized с сервера при запросе файлов js.

Проблема в том, что дифференциальная загрузка выполняется следующим образом:

<script src="main-es2015.1234.js" type="module"></script>

Кажется, что некоторые браузеры иногда не хотят передавать информацию об аутентификации для <script type="module" .... Меня поражает, что есть несколько способов обойти это:

  • Я могу обойти это, добавив crossorigin="use-credentials" к тегу скрипта, но я не смог найти, как это сделать в ng build.
  • Я могу настроить параметры аутентификации, чтобы каким-то образом разрешать анонимные запросы к моим JS-файлам, но я не смог найти метод ядра dotnet, который бы выполнял это без особой сложности. Прямо сейчас все приложение позволяет только аутентификацию Windows. Если я разрешаю анонимность, мне не нужно беспокоиться о том, что я оставил контроллер открытым.

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

Ответы [ 2 ]

0 голосов
/ 22 июля 2019

После публикации принятого ответа в опциях Angular CLI добавлена ​​возможность обрабатывать это первым способом, который McAden предлагает, добавив crossorigin = "use-credentials".

Оригинальный запрос функции

угловая документация по CLI

В вашем angular.json добавьте

{
   ...,
   "build": {
     "builder": ...,
     "options": {
        ...
        "crossOrigin": "use-credentials"
     }
   }
}
0 голосов
/ 26 июня 2019

Я изменил angular.json и использовал явный deployUrl в проектах -> main -> architect -> build -> options:

         "deployUrl": "/ClientApp/dist/",

, который изменяет теги сценария:

<script src="/ClientApp/dist/main-es2015.1234.js" type="module">

Таким образом, он больше не проходит через приложение ядра dotnet для извлечения файла js.Затем в IIS я установил эту папку, чтобы разрешить анонимность.

...