2017-07-14 85 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