我試圖在Mac OS X(10.9.5)上的本地主機http://127.0.0.1:8080/上顯示HTML頁面,但圖像未顯示。 我在Common Lisp的一個非常粗魯的程序作爲Web服務器,它只是監聽和HTML頁面輸出到插座8080 的HTML頁面(剝離一切後)只是:圖像不會通過網絡服務器顯示在網頁上
<html>
<head>
</head>
<body>This is a test
<img src="/Users/John/bs/images/MyImage.png"/>
</body>
</html>
當我寫http://127.0.0.1:8080/在瀏覽器的URL(我嘗試過FF和Safari)頁面顯示,但沒有圖像。 我試圖改變img路徑從絕對到相對,以所有可以想象的方式(../../bs/images/MyImage.png等),但無濟於事。 HTML頁面位於/Users/John/bs/index.html。充當服務器的程序位於相同的目錄中。 如果我直接從URL欄中打開該頁面,file:///Users/John/bs/index.html它工作正常,顯示圖像。 我不知道這是否是從主機根(我忽略它在哪裏)的相對路徑的問題,或瀏覽器通過Web服務器訪問頁面的問題。 這裏是Lisp代碼的一個片段:
(defun serve (request-handler)
(let ((socket (socket-server 8080)))
(unwind-protect
(loop (with-open-stream (stream (socket-accept socket))
(let* ((url (parse-url (read-line stream)))
(path (car url))
(header (get-header stream))
(params (append (cdr url)
(get-content-params stream header)))
(*standard-output* stream))
(funcall request-handler path header params))))
(socket-server-close socket))))
(defun request-handler (path header params)
(princ "HTTP/1.1 200 OK")
(terpri)
(terpri)
(with-open-file (in "bs/index.html")
(copy-stream in *standard-output*)))
(serve #'request-handler)
有沒有人有同樣的問題?感謝您的任何建議。
Leo,請提供您編寫的Common-Lisp服務器應用程序中使用的一些代碼 - 這有助於查明問題。 – Myst
請勿將它置於評論中 - 編輯您的問題... – Myst
此外,您的文件名是否在您的代碼中硬編碼?如果是這樣,您的服務器將不會提供任何其他文件。 – Myst