我有 2 个域,一个托管我的应用程序 - myapp
,另一个托管 gooddata 仪表板 - analytics.myapp
。我想在我的应用程序的页面中嵌入一个gooddata仪表板。我已将 frame-src 设置为允许来自仪表板所在域的请求:
set $CSP "${CSP}; frame-src https://analytics.myapp.com/";
add_header Content-Security-Policy ${CSP};
我还在CORS
主机analytics.myapp
上设置了允许来自myapp
域的请求:
ingress:
nginx.ingress.kubernetes.io/enable-cors: "true"
nginx.ingress.kubernetes.io/cors-allow-origin: "http://localhost:10000, https://myapp.com"
我想将包含来自域的内容的 iframe 嵌入到域analytics.myapp
上的页面中,只有在您通过身份验证后才能看到myapp
。现在,当我加载内容时,iframe 正在显示登录页面,如果我尝试通过 iframe 登录,则会收到错误消息:
Blocked autofocusing on a <input> element in a cross-origin subframe.
如果我analytics.myapp
在另一个不起作用的选项卡中使用用户登录,因为 cookie 不会发送到myapp
域。我看到可以通过他们文档中的 api 进行身份验证。他们也有关于如何嵌入仪表板的文档,但是为了查看嵌入式仪表板文档说:
用户必须是工作区成员才能查看嵌入式仪表板。
我还没有实现 SSO(单点登录),但我想知道一旦我实现它,CORS 还会有问题吗?我想,一旦我实现了这个,并且来自myapp
域的用户转到我有一个带有嵌入式仪表板的 iframe 的页面analytics.myapp
,他们将被重定向到一个身份验证端点,在该端点上myapp
,用户将通过 SSO 进行身份验证analytics.myapp
并重定向回来与analytics.myapp
用户数据。
现在是正确的流程,并且可以与 iframe 一起使用,是否有任何 CORS 问题,可以这样实现吗?