在 Content Security Policy 中有没有办法匹配 self + any 端口?

In Content Security Policy is there a way to match self + any port?

在开发中,我有一个在标准端口 35729 上运行的 livereload 服务器,但是它没有加载,因为我的政策有 script-src 'self'。有没有办法在所有端口上允许 'self'?

'localhost:*' 也不是一个很好的解决方案,因为有时我会在我们的本地网络上测试站点,所以它可能是一个 IP 地址而不是 'localhost'。

当然,如果需要,我可以将此 header 从开发中删除,但我正在努力使其尽可能接近实际运行。

没有。 'self' 始终将您限制在您所在的站点 - 如果您从页面所在的同一应用程序提供脚本,请使用它。它并不是真的打算允许来自同一服务器上其他进程的资源。

您可以将源设置为配置或安装设置。在您的开发配置中添加 localhost:*,并在您的 LAN 测试环境中将其更改为特定的 resourceserver:35729

澄清一下 - 您可以对端口使用通配符,但必须指定域。 您不能使用'self':*

示例:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' localhost:* example.com:*" />

Mozilla 文档:

The site's address may include an optional leading wildcard (the asterisk character, '*'), and you may use a wildcard (again, '*') as the port number, indicating that all legal ports are valid for the source.

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/default-src#Sources