2017-07-14 84 views
0
页面的完整网址提供不同的资源

比方说,我们有两页:根据请求

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

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

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

如果我想要服务器服务resource.js能够服务于不同版本的resource.js,具体取决于请求来自哪个页面,是否有可靠的头部,可以确定请求页面的完整URL(或者可能有其他方法来确定此问题)?

我知道有一个Origin标题,但从我的理解,这只是代表没有完整的URL和查询字符串的域(和任何子域)。有没有办法让服务器知道资源请求的完整URL和查询字符串?


如果这是不可能的,我知道这会很容易以包括JS脚本标记信息如下:

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

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

回答

0

Referer标题,您可以使用。请使用Vary: Referer。否则,浏览器会缓存这个资源,就好像引用页面URL并不重要一样。

虽然我想请你不要这样做。你会创造一个问题的兔子洞,因为并非所有的浏览器或代理服务器都表现良好。无论如何,无论你如何处理Vary标题,有些人都会积极地缓存这些内容。

+0

好点 - 我认为我最初的想法可能有缺陷。根据我的问题的第二部分,是否有任何方法让浏览器自动在URL中附加某种唯一标识符,或者某种方式让提供资源的终端服务器能够区分来自'firstpage.html '和'secondpage.html'? – abagshaw

+1

@abagshaw您需要预处理发送给客户端的HTML以包含要加载的URL,或者使用JavaScript来添加脚本。 – Brad