从另一个网站读取cookie

时间:2018-01-16 13:45:54

标签: asp.net cookies

我目前的客户与2个单独的网站合作

  1. 门户网站
  2. 预订网站
  3. 预订网站从门户网站调用,并在预订完成后重定向回门户网站。

    但预订网站也是独立存在的,由另一方管理。我们无法改变任何目的。

    门户网站和预订网站都可以自定义,而不会相互影响。这是“按设计”完成的,但目前我们面临着语言设置的问题:预订网站的语言设置应该用于门户网站。

    此时门户网站内的语言是通过读取cookie来设置的:

    HttpCookie cookie = Request.Cookies["LanguageCookie"];
    

    预订网站同时使用2个cookie:

    1. currentPOS
    2. currentLANG
    3. 预订网站在门户网站的子域上运行。

      我一直在做一些阅读,在我的情况下,我应该能够阅读这样的cookie:

      HttpCookie cookie1 = Request.Cookies["currentPOS"];
      HttpCookie cookie2 = Request.Cookies["currentLANG"];
      

      它不起作用,但在其他页面上,它们开始设置cookie的.Domain属性。

      所以我的问题是,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

虽然可以实施直接解决方案,但我的建议是避免尝试从其他网站读取Cookie。假设出于某种原因,某些原因(例如商业原因)这两个应用程序不会共享顶级域名,而是会在不相关的域名上运行?什么?

一个简单的解决方案是扭转信息流。假设您有网站 A 且网站 B A 设置 B 想要阅读的信息。

您当前的方法是能够读取 A 设置的 B Cookie。

简单的解决方案是使用相反的流程, A 设置 B 中的信息。从技术上讲,它可以使用单个动态元素实现,以 A 呈现,调用 B ,例如像素图像

<!-- http://a.com/index.html -->
...
    <img src="http://b.com/setParams?currentLang=en />

B 中呈现时,此像素会为 B 设置Cookie,以便根本没有跨域Cookie。相反,信息通过直接跨域调用传递(这就是为什么经常使用图像,因为它不受限制),并且cookie仅用于在被叫方存储该信息。

由于它是图像元素,只需确保它不会改变 A 的页面布局。

此技术通常用于跨域跟踪信息,由于此类图像的内容无意义,因此它们通常呈现为1x1(一个像素)透明图像(这就是名称​​ pixel 来自)。