根据请求页面的完整URL提供不同的资源

时间:2017-07-14 21:49:56

标签: html browser http-headers

我们说我们有两页:

  1. https://www.example.com/first/firstpage.html

  2. https://www.example.com/second/secondpage.html

  3. 加载资源https://www.example.com/resource.js

    如果我希望服务resource.js的服务器能够提供不同版本的resource.js,具体取决于请求来自哪个页面,是否有可靠的标头,其中包含完整的URL可以确定请求页面(或者可能还有其他方法来确定这个)?

    我知道有Origin标头,但根据我的理解,这只代表没有完整网址和查询字符串的域(以及任何子域)。有没有办法让服务器知道资源请求来自的完整URL和查询字符串?

    如果这不可能,我知道将这些信息包含在JS脚本标记中会很容易,如下所示:

    <script src="/resource.js?origin=/first/firstpage.html"></script>

    但我不想修改每个页面的脚本标记。是否有其他方法让页面自动在资源请求的查询字符串中包含它自己的URL(没有必须使用我自己的JS脚本动态加载资源 - 仅请HTML !),或只是任何唯一标识符,以便脚本标记不必在每个页面上单独修改?

1 个答案:

答案 0 :(得分:0)

您可以使用Referer标题。

确保您的回复使用Vary: Referer。否则,浏览器将缓存此资源,就像引用页面URL没有关系一样。

我恳求你们不要这样做。您将创建一个问题的兔子洞,因为并非所有浏览器或代理服务器都表现良好。无论你使用Vary标题做什么,有些人都会积极地缓存这个。