gpt4 book ai didi

python - 如何响应 JSON-RPC 服务器上的 HTTP OPTIONS 请求

转载 作者:太空狗 更新时间:2023-10-30 03:07:54 25 4
gpt4 key购买 nike

我的 JSON-RPC 客户端(使用 dojo JSON-RPC 的浏览器)向我在 myserver.com/12345(Python 2.5, SimpleJSONRPC 服务器)。

服务器随后收到一个 header 为“OPTIONS/HTTP/1.1”的 HTTP 请求,默认情况下它无法处理该请求,因此我为该请求编写了一个自定义处理程序。

来自浏览器的请求头说:

OPTIONS / HTTP/1.1
Host: myserver:12345
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.8) Gecko/20100214 Linux Mint/8 (Helena) Firefox/3.5.8 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.7,de;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Origin: http://myserver.com
Access-Control-Request-Method: POST
Access-Control-Request-Headers: x-requested-with

我发送的响应如下所示:

HTTP/1.0 200 OK
Server: BaseHTTP/0.3 Python/2.5
Date: Mon, 05 Apr 2010 18:58:34 GMT
Access-Control-Allow-Method: POST
Access-Control-Allow-Headers: POST
Allow: POST
Content-Type: application/json-rpc
Content-length: 0

但在浏览器中出现以下错误:

错误:无法加载 http://myserver.com:12345状态:0

我确认可以从网络访问 JSON 服务。

现在的问题是,浏览器(比如 Firefox)期望听众说什么?还是问题出在其他地方?

最佳答案

添加代码并尝试,它对我来说工作正常:

class CGIHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
...
...
def do_OPTIONS(self):
self.send_response(200, "ok")
self.send_header('Access-Control-Allow-Origin', self.headers.dict['origin'])
self.send_header('Access-Control-Allow-Methods', 'POST, OPTIONS')

关于python - 如何响应 JSON-RPC 服务器上的 HTTP OPTIONS 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2580461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com