Angular6:使用CDN而不是Index.html来提供资产-安全错误:无法在“历史记录”上执行“ replaceState”

时间:2018-09-15 16:01:38

标签: angular angular6 cdn

目标

在CDN(CloudFront)上提供除index.html之外的所有文件。因此,该应用程序在与资产不同的子域中提供。

问题

我使用ng build --prod --aot --base-href https://mycdn.x.com来构建我的应用程序,然后将所有文件发送到我的CDN。 Nginx服务器正在提供index.html

发生的事情是在应用程序加载时出现以下错误:

Uncaught (in promise): SecurityError: Failed to execute 'replaceState' on 'History': 
A history state object with URL 'https://mycdn.x.com/' cannot be created in a document with origin 
'https://myapp.x.com' and URL 'https://myapp.x.com/page1/page2'.

注释

  • 所有文件都加载了200个代码。
  • CORS已设置为*来源的GET / HEAD。

在保持应用正常运行的同时,如何提供CDN的所有资产?

1 个答案:

答案 0 :(得分:1)

找到了解决方案,应该使用--deploy-url而不是--base-href

ng build --prod --aot --deploy-url https://mycdn.x.com