繁体   English   中英

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)已被移动,而不是添加。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM