我最近使用ng update
从Angular 7更新到Angular 8。遵循预期的迁移路径,没有问题后,我进行了构建和部署。一切工作都很好,直到我开始检查其他浏览器版本,并意识到其中一些正在从服务器获取401 unauthorized
来请求js文件。
问题是,差分加载是这样完成的:
<script src="main-es2015.1234.js" type="module"></script>
似乎某些浏览器有时不想传递<script type="module" ...
的身份验证信息。令我惊讶的是,有几种方法可以解决此问题:
crossorigin="use-credentials"
来解决此问题,但是我无法在ng build
中找到如何做的方法。我认为以前的选择是更清洁的解决方案,但我愿意接受其他选择。
答案 0 :(得分:0)
我修改了angular.json
,并在项目->主->架构师->构建->选项下使用了明确的deployUrl
:
"deployUrl": "/ClientApp/dist/",
这会更改脚本标签:
<script src="/ClientApp/dist/main-es2015.1234.js" type="module">
因此,它不再通过dotnet核心应用程序来提取js文件。然后在IIS中,将该文件夹设置为允许匿名。
答案 1 :(得分:0)
自发布可接受的答案以来,已将Angle CLI选项中添加了通过McAden建议的通过添加crossorigin =“ use-credentials”的第一种方式处理此问题的选项。
在您的angular.json中添加
{
...,
"build": {
"builder": ...,
"options": {
...
"crossOrigin": "use-credentials"
}
}
}