亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Go http:服務 /static 和 /static/ 之間的區別

Go http:服務 /static 和 /static/ 之間的區別

Go
牛魔王的故事 2021-12-20 14:36:52
我有一個可怕的困惑http.FileServer和斜線。我需要為 html 頁面提供腳本。在我正在工作的目錄中index.html,我有一個頁面,我在里面有一個static目錄myscript.js。第一個問題:寫的對不對<script src="/static/myscript.js"></script>? 我也看到了src="static/myscript.js",我不知道是否有理由使用一個或另一個(但我想它會影響我們必須在服務器上編寫的處理程序)。假設我們滿足于第一個版本。第二個問題:在服務器端,我想為 directory 注冊處理程序static。受這個例子的啟發,我這樣做:fs := http.FileServer(http.Dir("./static"))http.Handle("/static", http.StripPrefix("/static", fs))但我得到了一個404. 但是,如果我使用:fs := http.FileServer(http.Dir("./static"))http.Handle("/static/", http.StripPrefix("/static/", fs))用結尾斜線,它工作正常!我對網絡服務器真的很陌生,所以我很感激任何解釋,包括函數傳遞的實際地址是什么。例如,我不知道(并且我無法從net/http文檔中弄清楚)在處理/static請求時傳遞給處理程序的地址是什么。我想是/static/myscript.js因為我們正在使用,http.StripPrefix但我沒有實際的方法來證明它。
查看完整描述

1 回答

?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

http.Handle("/static", http.StripPrefix("/static", fs))注冊一個固定的名稱模式。

http.Handle("/static/", http.StripPrefix("/static/", fs))注冊一個有根的子樹模式。

前者只匹配請求 where URL.path = "/static"。后者匹配所有以"/static/".開頭的路徑。在404表明它不能匹配給定請求的任何模式,而不是所請求的文件沒有被發現。(它甚至無法執行FileServer's 處理程序?。?/p>


并回答你的第一個問題:

<script src="/static/myscript.js"></script>

以斜杠開頭的 URL/絕對的。這意味著您在哪個頁面上并不重要,它將始終附加到域名,例如example.com/some/page/static/myscript.js=example.com/static/myscript.js

<script src="static/myscript.js"></script>

相對路徑。這意味著它將被附加到當前訪問頁面的 URL 例如example.com/some/pagestatic/myscript.js=example.com/some/page/static/myscript.js


查看完整回答
反對 回復 2021-12-20
  • 1 回答
  • 0 關注
  • 266 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號