使用野生动物园时在iframe中设置Cookie

时间:2019-04-04 17:05:20

标签: javascript cookies iframe safari cors

我知道Stackoverflow和互联网上有很多相关的问题和答案,但是,我找不到适合我的案例的解决方案。

我们在域A上有一个我们无法控制的应用程序,在域B上有一个应用程序-我们集成到应用程序A中的iframe。我们在应用程序B中使用cookie。一切正常,在请求之间保留cookie ,但Safari除外。我阅读了https://gist.github.com/iansltx/18caf551baaa60b79206,并了解到Safari是一种特殊功能,它要求用户过去与域B进行显式交互。

我们试图通过尝试在站点A上渲染不可见的像素来克服该问题,该像素使用我们的集成JS脚本,该脚本将iframe注入站点A的某个div中。此外,我们还尝试向域A到域A发出CORS ajax请求B(同样来自我们的集成脚本),我们确实使用了withCrendetials:true,如果它很重要,并且请求成功返回了“ set-cookie”标头,但该cookie并未传递到iframe到域B的其他请求中。

但是,如果我明确打开域B,则会突然在集成到域A的iframe中传递cookie。

我认为到目前为止,我们已经尝试了所有可以想得到的方法,但是没有运气。一些资源建议使用JS重定向,但是我认为这是糟糕的用户体验。我希望有一个更好的解决方案。

任何指针都受到高度赞赏。拜托,请保存我的一天,这个问题使我发疯:)

1 个答案:

答案 0 :(得分:0)

通过大量研究,我们得出结论,最好摆脱Cookie并明确使用Authorization标头。仅剩下一个问题:我们通过DOM插入的图像,因此我们无法在其中传递Authorization标头(使用查询参数并不理想,因为它会暴露auth令牌)。我们通过对图像URL进行ajax请求并将其作为blob插入DOM来解决了这个问题。