Python HTTPServer 响应 curl 但不响应 Postman GET 请求

Python HTTPServer responding to curl but not to Postman GET request

考虑 Python3 中带有模块 BaseHTTPRequestHandler 的简单服务器。

import json
import urllib.parse
from http.server import BaseHTTPRequestHandler, HTTPServer
import bson.json_util

class GetHandler(BaseHTTPRequestHandler):

    def do_GET(self):
        print("/n=================================")
        json_string = '{"hello":"world"}'
        self.wfile.write(json_string.encode())
        self.send_response(200)
        self.end_headers()
        return

if __name__ == '__main__':
    #from BaseHTTPServer import HTTPServer
    server = HTTPServer(('localhost', 3030), GetHandler)
    print ('Starting server, use <Ctrl-C> to stop')
    server.serve_forever()

这是来自终端的 curl 正确响应:

curl -i http://localhost:3030/

但是,当尝试从 Postman 发送请求时,它没有响应。我尝试了 URL localhost:3030/http://localhost:3030/ 以及环回地址。

这是为什么?

在我看到的所有示例中,它都没有指定内容类型,所以我做了同样的事情,看到 curl 有效,我并没有太担心。

但是应该指定内容类型:在self.wfile.write(...)之前添加这些行解决问题:

self.send_response(200)
self.send_header('Content-type', 'application/json')
self.end_headers()

请注意,实际上 self.send_response(200) 已被移动,而不是添加。