Angular 由于 dotnet 核心的身份验证问题,8 个差异加载失败

Angular 8 differential loading failing due to auth issues with dotnet core

我最近使用 ng update 从 Angular 7 更新到 Angular 8。在遵循预期的迁移路径而没有出现任何问题后,我构建并部署了它。一切都很好,直到我开始检查其他浏览器版本并意识到有些浏览器在请求 js 文件时从服务器获取 401 unauthorized

问题是,差异加载是这样完成的:

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

似乎某些浏览器有时不想传递 <script type="module" ... 的身份验证信息。令我印象深刻的是,有几种方法可以解决这个问题:

我认为前一种选择是更清洁的解决方案,但我愿意接受其他选择。

我修改了 angular.json 并在项目 -> 主要 -> 架构师 -> 构建 -> 选项下使用了显式 deployUrl

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

这改变了脚本标签:

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

所以不再通过dotnet core应用拉取js文件。然后在 IIS 中我将该文件夹设置为允许匿名。

自从发布已接受的答案后,McAden 建议通过添加 crossorigin="use-credentials" 的第一种方式处理此问题的选项已添加到 Angular CLI 选项中。

Original feature request

Angular CLI documentation

在你的 angular.json 添加

{
   ...,
   "build": {
     "builder": ...,
     "options": {
        ...
        "crossOrigin": "use-credentials"
     }
   }
}