如何查到下挂网站
网站A(SITE-A)中提交一表单到网站B(SITE-B),网站B(SITE-B)收到请求后,用一个嵌套FORM的表单自动提交到网站C(SITE-C)如下:
SITE-A(下挂)-> SITE-B(自动提交新的FORM) -> SITE-C其中,使用Referer只能找到请求是SITE-B中提交的,无法找到SITE-A的信息。(如果SITE-B没有再次提交,而是将SITE-A的请求跳转到SITE-C,那么Referer参数就能看到请求是有SITE-A中发起的)请问,在这样的情况下,SITE-C中如何查到请求最初是由SITE-A提交过来的呢?

解决方案 »

  1.   

    很遗憾,不行。如果这三个Site,都是你所控制的,那么你可以自行约定在HTTP-Head中加入更多的自定义头信息来存储这些内容;如果不是你所控制的,那么只会有一个Referer值可供参考。
      

  2.   

    谢谢ldh911
    这三个SITE只有SITE-C是能控制的(自己的系统),SITE-A和SITE-B都不能控制。没有其他办法吗?
      

  3.   

    恐怕没有了,这个Referer是HTTP的一个规范。原意是用来统计外站访问量的(知道你站点的访问都是从哪来的,是Google还是Baidu?)而Referer实际上是浏览器写到HTTP-Header中的信息,而并非是SiteA和SiteC。浏览器只会写一次该信息,所以恐怕确实没啥办法
      

  4.   

    是的,你说的没错。
    在我说的例子中,如果Site-B没有特殊处理,只是将Site-A的请求重定向到Site-C,那么Site-C可以从Header中得到Referer的地址为Site-A的地址,那么就能很清楚的看到是下挂网站发送到请求(正常应该是Site-B的地址)。
    但实际上,Site-B接受到Site-A的请求后,做了一个JSP自动提交隐藏Form到Site-C,相当于是一个新的请求,这个时候,Site-C从Referer中只能看到Site-B的地址,无法找到下挂了。
      

  5.   

    是的,除非SiteB你能控制,将SiteA转过来的Referer信息追加到 Form 的隐藏字段,或者HTTP-Head中去。那么你的SiteC才有机会能得到。