语境
我在页面上有这个 CSP(在 vite react 应用程序中):
frame-src http://localhost:3080; style-src 'self' 'unsafe-inline' http://localhost:3080
页面上http://localhost:3080
嵌入了一个 iframe。我无法控制该 iframe,因为它是由本地容器中运行的第三方应用生成的。iframe 自己的 CSP 标头类似于以下内容:
default-src 'none'; script-src 'self' https://maps.google.com https://accounts.google.com https://www.google-analytics.com 'sha256-xxxx=' 'sha256-xxxx=' 'sha256-xxxx='; child-src 'self' https://accounts.google.com; style-src 'self' 'nonce-xxxx' https://accounts.google.com; font-src *; img-src * 'self' data:; connect-src 'self' https://accounts.google.com service.us10.list-manage.com www.google-analytics.com https://service.example.com ; manifest-src 'self'; frame-ancestors 'none';
问题
在主 vite 应用程序中,当我尝试调整子 iframe 的高度时,浏览器中出现此错误:
Uncaught SecurityError: Failed to read a named property 'document' from 'Window': Blocked a frame with origin "http://localhost:3000" from accessing a cross-origin frame.
还有这个错误(这很有趣,因为我没有直接对https://accounts.google.com做任何事情):
Refused to apply inline style because it violates the following Content Security Policy directive: "style-src 'self' 'nonce-xxxx' https://accounts.google.com". Either the 'unsafe-inline' keyword, a hash ('sha256-xxxx='), or a nonce ('nonce-...') is required to enable inline execution.
问题
在上述情况下,vite 应用程序是否可以实现 CSP,从而允许更新 iframe 的高度,或者这是不可能的?我无法判断代码是否错误,或者这在技术上是否不可行。