2016年11月10日木曜日

「Land of Lisp」13章のWebサーバーにFirefoxからアクセスするときの注意点

「Land of Lisp」を13章まで読み終わった。

この章ではWebサーバーを書いていくのだが、このWebサーバーにFirefoxからアクセスすると、HTMLコードがブラウザに解釈されずにそのまま表示されてしまう。ChromeではHTMLがきちんと解釈されて入力フォームなどが普通に表示される。

これを修正してFirefoxでもHTMLコードを解釈させるには、hello-request-handler関数に手を加える必要がある。具体的には、次のコードのようにHTMLを出力する前にレスポンス行および改行を二つ出力するようにすると、Firefoxでも本書のp.262、p.263
に掲載されている画像と同じように表示される。

(defun hello-request-handler (path header params)
  (if (equal path "greeting")
      (let ((name (assoc 'name params)))
        (if (not name)
            (progn
              (princ "HTTP/1.1 200 OK")
              (terpri)
              (terpri)
              (princ "<html><form>What is your name?<input name='name' /></form></html>"))
            (progn
              (princ "HTTP/1.1 200 OK")
              (terpri)
              (terpri)
              (format t "<html>Nice to meet you, ~a!</html>" (cdr name)))))
      (princ "Sorry... I don't know that page.")))