LINUX.ORG.RU

sbcl hunchentoot - проблема с set-cookie


0

0

Изучаю hunchentoot, пробую установить куки.

Следующий код:

(require :hunchentoot)

(defvar *http-server* nil)

(defun request-main-page (&optional (request nil))
  (let ((left "<html> <body>main fucking page<br>")
	(right "<FORM action=\"http://localhost:9000/\" method=\"post\">
    <P>
    <LABEL for=\"firstname\">First name: </LABEL>
              <INPUT name=\"firstname\" type=\"text\" id=\"firstname\"><BR>
    <LABEL for=\"lastname\">Last name: </LABEL>
              <INPUT type=\"text\" id=\"lastname\"><BR>
    <LABEL for=\"email\">email: </LABEL>
              <INPUT type=\"text\" id=\"email\"><BR>
    <INPUT type=\"radio\" name=\"sex\" value=\"Male\"> Male<BR>
    <INPUT type=\"radio\" name=\"sex\" value=\"Female\"> Female<BR>
    <INPUT type=\"submit\" value=\"Send\"> <INPUT type=\"reset\">
    </P>
 </FORM>
</body> </html>")
	;(center (hunchentoot:post-parameter "firstname"))
	(hunchentoot:set-cookie "fuck" :value "fuck2"))
    (return-from request-main-page 
      (concatenate 'string left center right))))

(defun request-invalid-page (&optional (request nil))
  "INVALID PAGE")

(defun set-dispatch-table ()
  (setq hunchentoot:*dispatch-table*
	(list (hunchentoot:create-regex-dispatcher "^/$" 'request-main-page)
	      (hunchentoot:create-regex-dispatcher "^/.*" 'request-invalid-page))))

(defun start-http-server (&optional (port 9000))
  (setq *http-server*
	(hunchentoot:start (make-instance 'hunchentoot:acceptor :port port))))

(defun quick-start ()
  (set-dispatch-table)
  (start-http-server))

Когда печатаю "http://localhost:9000/" вываливается с 500 internal error. Ошибка уходит, если убрать set-cookie в функции request-main-page или же убрать параметр ":value «somevalue» " из функции.

Я строго придерживаюсь определения функции (http://weitz.de/hunchentoot/#set-cookie):

set-cookie  name &key value expires path domain secure http-only reply  =>  cookie

В чем ошибка, подскажите пожалуйста.

★★

   ;(center (hunchentoot:post-parameter "firstname")) 

надо раскоментить. Но все равно не работает, ибо ошибка на строке с set-cookie.

bk_ ★★
() автор топика
Ответ на: комментарий от bk_

Говорит при включенной отладке:

Compile-time error: The LET binding spec (HUNCHENTOOT:SET-COOKIE «fuck» :VALUE «aa») is malformed.

Выражение же сформировано по правилу?!

bk_ ★★
() автор топика
Ответ на: комментарий от bk_

РЕШЕНО

Прошу прощенья, затупил :( Я ведь добавил установку кука в let-форму, причем некорректно, оно и не работало. Вынес за ее пределы - все ок.

bk_ ★★
() автор топика
Ответ на: комментарий от bk_

> Мне больше по нраву *show-lisp-errors-p*.

Гы, отказываешься от отладчика?

archimag ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.