在 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.
在开发中,我有一个在标准端口 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.