Google chrome 为什么iframe请求不发送cookie?

Google chrome 为什么iframe请求不发送cookie?,google-chrome,security,iframe,cross-domain,content-security-policy,Google Chrome,Security,Iframe,Cross Domain,Content Security Policy,一个同级部门创建了一个HTML文件,它实际上是少数iFrame的脚手架。iFrame各自调用一个报告,该报告托管在web服务器上,参数略有不同。被调用的报告将向未经身份验证的用户显示登录表单,或向已通过身份验证的用户显示报告内容 scaffold.html: <html> <head> <title>I just show the output from a bunch of report calls</title> <

一个同级部门创建了一个HTML文件,它实际上是少数iFrame的脚手架。iFrame各自调用一个报告,该报告托管在web服务器上,参数略有不同。被调用的报告将向未经身份验证的用户显示登录表单,或向已通过身份验证的用户显示报告内容

scaffold.html:

<html>
   <head>
      <title>I just show the output from a bunch of report calls</title>
   </head>
   <body>
      <iframe src="https://somesite.com/useful_report.html?parameter1=a&parameter2=1" id="iframe1"></iframe>
      <iframe src="https://somesite.com/useful_report.html?parameter1=b&parameter2=2" id="iframe2"></iframe>
      <iframe src="https://somesite.com/useful_report.html?parameter1=c&parameter2=3" id="iframe3"></iframe>
      <iframe src="https://somesite.com/useful_report.html?parameter1=d&parameter2=4" id="iframe4"></iframe>
   </body>
</html>

我只是显示了一系列报告调用的输出
兄弟组织向我们解释说,如果用户登录,上面的设置非常有效——直到几天前,每个iFrame都会显示有用的_report.html内容

当我

  • 那么,请登录到
  • 装载file:///C:/Users/me/Desktop/scaffold.html 变成铬
  • 每个iframe都返回登录表单。如果我随后在单独的选项卡中打开有用的‡u report.html,则会加载报告内容(证明somesite.com知道我仍在登录‡)

    使用开发人员工具,我可以看到有用的_report.html的请求头不包含“Cookie:”属性,因此这解释了为什么有用的_report.html返回登录表单

    我的问题是为什么iframe请求不发送cookie?是什么Chrome和/或服务器设置/策略/指令阻止了它


    ——-现在它知道我知道它知道了。

    如果您希望使用本机ajax或jquery ajax,请去掉async:false。这对我有用


    为了在旧浏览器上进一步兼容,我建议使用。EasyXDM方法是使用iframe攻击,要求您在进行ajax调用的主机上放置一个html文件。这将是强制异步的,是的。但是这个easyXDM的好处是,您不必担心cors头。

    这是因为SameSitecookie策略,这意味着除非用户能够看到排除iFrame的URL,否则不会发送cookie


    如果您拥有somesite.com,您可以通过将SameSite policy设置为None来选择退出此策略,并通过Doy来处理CSRF攻击的风险。

    somesite.com是否在其cookie中设置
    SameSite
    @cody我正在查看cookie,但我没有看到该名称(或类似名称)的任何属性。
    SameSite
    属性是我可以在开发人员工具中看到的吗?是的,您可以在开发人员工具的cookie中看到它作为名称/值对,比如会话id或其他任何东西。。把它从列表中划掉我猜你能不能快速启动一个本地http服务器,通过它为文件提供iFrame,然后看看它是否有区别?@cody是的,它确实有区别;当托管在somesite.com上时,scaffold.html iframes将加载报告内容(请求标题包括cookie)。感谢您的提示,但这并不能回答问题。@JeromyFrench,您已更改了问题的内容,因此如果我的答案回答了您的问题,则会更改内容。False。“我的问题是为什么iframe请求不发送cookie?是什么Chrome和/或服务器设置/策略/指令阻止了它?”这是问题的原始草稿。