GWT 超级开发模式内容安全策略

GWT super dev mode content security policy

当我在 Eclipse 中使用超级开发模式对其进行测试时,我在浏览器中的代码中遇到以下错误:

wmsapp.nocache.js:131 Refused to load the script 'http://127.0.0.1:9876/wmsapp/5B051516607B4217EFF2D0B7FB10B220.cache.js' because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe-inline' 'unsafe-eval' http://127.0.0.1:9876/recompile-requester/wmsapp http://127.0.0.1:9876/recompile/wmsapp http://127.0.0.1:9876/wmsapp/wmsapp.nocache.js". Note that 'script-src-elem' was not explicitly set, so 'script-src' is used as a fallback.

installCode @ wmsapp.nocache.js:131

显然,在未来的测试中,5B051516607B4217EFF2D0B7FB10B220.cache.js 会发生变化。我知道这一点是因为在之前的测试中我有不同的文件参考。对于另一个 GWT 项目,我没有这个问题。那我做错了什么?我无法将其添加到内容安全策略中,因为它会发生变化。有什么想法吗?

真正奇怪的是,我在源目录结构中的任何地方都看不到这个文件,即使在其他文件中也是如此。今天早些时候,对于不同的测试,我得到了一个不同的文件,我确实看到它在另一个文件中被引用,但没有找到文件本身。对于这个最新的测试,它位于临时文件夹下,C:\Users\<userid>\AppData\Local\Temp\gwt-codeserver-3014931782125410745.tmp,我认为这是有道理的,并确认了为什么它会随着每次测试而变化。

当前的安全内容政策:

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline' http://127.0.0.1:9876; script-src 'self' 'unsafe-inline' 'unsafe-eval' http://127.0.0.1:9876/recompile-requester/wmsapp http://127.0.0.1:9876/recompile/wmsapp http://127.0.0.1:9876/wmsapp/wmsapp.nocache.js">

根据您使用的 GWT 版本,GWT 通常会创建多个 JS 文件。 IIRC 并且没有任何改变,你有 - 使用持久的 GWT 版本 - 5 排列。这些是 *.nochache.js 正在加载的具有神秘名称的文件。

这些排列将从代码服务器加载。通过在 Content-Security-Policy 标签内定义文件,您可以定义可以加载的文件。而且因为文件名总是变化的,所以你没有机会添加它们。

那么,为什么不使用:

script-src http://127.0.0.1:9876

如第三个例子here.