这个问题说明了一切。本教程:https ://www.html5rocks.com/en/tutorials/cors/至少Access-Control-Allow-Origin: *
要在服务器的响应中添加一个标头。
我的应用程序,运行 Hunchentoot,不返回它:
<!-- GET http://127.0.0.1:9000/ -->
<!-- HTTP/1.1 200 OK -->
<!-- Date: Fri, 13 Oct 2017 23:26:58 GMT -->
<!-- Server: Hunchentoot 1.2.37 -->
<!-- Keep-Alive: timeout=20 -->
<!-- Connection: Keep-Alive -->
<!-- Transfer-Encoding: chunked -->
<!-- Content-Type: text/html;charset=utf-8 -->
<!-- Request duration: 0.004275s -->
我查看了 Hunchentoot的文档及其headers.lisp文件,但找不到任何特定于 CORS 的内容,并且不明白如何简单地添加标题。
有什么帮助吗?谢谢 !
编辑:我实际上正在使用 Lucerne 和 Clack。
(in-package :cl-user)
(defpackage lisp-todo
(:use :cl
:lucerne)
(:export :app)
(:documentation "Main lisp-todo code."))
(in-package :lisp-todo)
添加
(defun change-headers (headers)
(setf (lack.response:response-headers *response*) headers))
抄送抄送 =>
包缺少.response 不存在。
或使用 Hunchentoot:
(setf (hunchentoot:header-out "Access-Control-Allow-Origin") "*")
变量 Hunchentoot:*reply* 未绑定。
实际上这个变量是用 定义的def-unbound
。
edit2:尝试使用 Ningle
(in-package :cl-user)
(defpackage todobackend-ningle
(:use :cl))
(in-package :todobackend-ningle)
;; blah blah blah.
(defvar *response* nil "") ;; to try the snippet below
(defun change-headers (headers)
;; (setf (lack.response:response-headers *response*) headers)) ;; => the value nil is not of type lack.response:response
(setf (lack.response:response-headers lack.response:response) headers)) ;; => unbound
(defvar *app* (make-instance 'ningle:<app>))
(change-headers '(:access-control-allow-origin "*"))
(setf (ningle:route *app* "/")
(lambda (params) ;; is that right ?
(change-headers '(:access-control-allow-origin "*"))
"Welcome to ningle!"))