HTTP 之 OPTIONS 请求

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qingshuiaishui/article/details/80274208

OPTIONS: 用来询问服务器支持哪些方法。

HTTP1.1 规范要求,必须包含 HOST 头部,服务器通过 Allow 头关返回服务器支持的方法, 一般包体为空。常规方法有 GET,POST,HEAD,TRACE,OPTIONS,默认情况下 IIS 不支持 PUT,DELETE。

CLISP  实现如下:

(defun http-options (url)
(let ((host nil)(rel-url nil))
(let* ((s (+ 3 (search "://" url)))
   (e (search "/" url :start2 s)))


(setf host (subseq url s e)
rel-url (subseq url e)))
(cli-init)
(http-write (format nil "OPTIONS ~a HTTP/1.1" rel-url))
(http-write (format nil "Host: ~a" host))
(http-write "Accept: *")
(http-write +newline+ nil)

(when *conn*
(http-stream-mode nil)
(let* ((tmp-list (loop for x = (http-read-line)
while (and x (plusp (length x)))
collect x))
   (content-length (get-content-length tmp-list)))
   
(http-stream-mode t)
;读取返回内容
(format nil
"~{~a~%~}~a~%"
tmp-list
(decode-bytes (loop for i from 0 to (1- content-length) for x = (http-read-byte) while x collect x)

*html-charset*))))))

执行结果截图:


猜你喜欢

转载自blog.csdn.net/qingshuiaishui/article/details/80274208