代码之家  ›  专栏  ›  技术社区  ›  temporary_user_name

跨源请求是否从其他域发送cookies?

  •  0
  • temporary_user_name  · 技术社区  · 6 年前

    如果我在浏览器example1.com中设置了多个cookie,并且我从example2.com向example1.com发出请求,那么为example2.com设置的cookie是否会包含在该请求中?

    0 回复  |  直到 6 年前
        1
  •  4
  •   David user10336229    6 年前

    Cookie始终取决于当前域。
    example2.com不可能以任何形式读取域example1.com的cookie。

    共享cookie的唯一方法是两个域具有相同的主域,因此它们看起来如下:

    • sub1.example.com网站
    • sub2.example.com网站

    或者像这样:

    • 范例网站
    • sub2.example.com网站

    这个 cookie-domain 必须在所有域中进行调整,以允许主域和子域或多个子域使用一个cookie。

    尽管如此,如果满足以下条件,表单、链接或脚本可以请求或发送某些信息而无需cookie CSP (见下文)。


    这并不意味着如果域之间从不共享同一个主域,那么它们之间的交互是被禁止的,但是 CSP (content security policies) 你已经影响到你的网站上有多少互动是被允许的。
    CSP s是有用的规则,但它们是愚蠢的,到目前为止,您可以允许或禁止对站点上的另一个域(google analytics、facebook等)进行脚本访问。不可能创建允许脚本执行的规则。

    此外,任何形式或链接的直接交互不包括或仅部分包含在 CSP 因此,在某些情况下,只将表单发送到当前域之外的另一个域可能是可行的,这可能取决于web服务的一些api,即oauth,然后csp必须相应地进行调整。

    如果您搜索在域之间交换信息的方法,您仍然可以选择在服务器端交换信息。因此example1.com的服务器可以通过单独的请求联系example2.com,网站用户不能评论这些东西。如果我考虑facebook,我会认为这是一个肮脏的伎俩,但我知道目的并不总是消极的和技术性的,这只是一个可能有助于解决一些问题的选择。服务器交互的一个可能解决方案是 cUrl -requests .

    还有一个关于 CSP 你可以允许iframes(其他类型的框架在html5中不再存在)。因此,如果 CSP 相应地进行了调整。

    编辑 :
    在某些情况下,建议对文件使用子域,以便文件总是在不使用任何cookie的情况下传递,并且只有html页面使用cookie传递。一般来说,在同一个域上也可以在不使用cookie的情况下传递文件,但是使用子域可能更容易。发送像图像、javascript文件和css文件这样的文件而不使用cookies会使站点更快,而且cookies对于静态文件的请求也毫无用处。请注意,有些文件(如图像或css)可能是在服务器上动态创建的,而不是静态的,因此这些文件可能需要cookies。

    关于你的问题 :
    如果将cookie域设置为覆盖主域和/或多个子域,则这些域将共享相同的cookie。不会有几个饼干,只有一个。