我正在管理一个由python第三部分构建的应用程序。
我有这个网址调度员
urls += [(r'/path/objectAlpha/(.*)', objectAlphaHandler)] # this was made by third parts, it is expected to work
而这个班
class objectAlphaHandler(BaseHandler):
def __init__(self, application, request, **kwargs):
super(objectAlphaHandler, self).__init__(application, request, **kwargs) # do the init of the basehandler
@gen.coroutine
def post(self, action=''):
response = {}
...
response = yield self.my_method(json_data)
...
self.write(json.dumps(response))
def my_method(self, json_data)
...
我想检查应用程序是否正确地接收到请求并返回一些响应。
所以我试着和邮递员一起访问那个网址
请求类型:
POST
URL:
http://<machine_ip>:<machine_port>/path/objectAlpha/
我从邮递员回复框中得到了这个错误。
解析错误:服务器返回一个格式错误的响应
当我点击“控制台中的视图”时,我看到
POST ip>:/path/objectAlpha/错误:解析错误:预期的HTTP/请求头内容-类型: application/json用户代理: PostmanRuntime/7.28.4接受:*/*邮递员-令牌: d644d7dd-699b-4d77-b32f-46a575ae31fc主机: xx.xxx.x.xx:22接受-编码: gzip,平减,br连接:保持-活动请求主体
Error: Parse Error: Expected HTTP/
是什么意思?
我检查了我的应用程序日志,但它似乎没有处理任何请求,即使邮递员表示服务器正在返回(格式错误)响应。
我还试着让目标网址实现以下目标:
https...
但它又回来了
错误:写入EPROTO 28427890592840:错误:100000f7:SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER:../../third_party/boringssl/src/ssl/tls_record.cc:242:
我发现了这表明我应该坚持HTTP
然后我也试了一下:
http://<machine_ip>/path/objectAlpha/
和
<machine_ip>/path/objectAlpha/
一般返回:
错误:连接经济实体的:80
我也试着代替线
urls += [(r'/path/objectAlpha/(.*)', objectAlphaHandler)]
使用
urls += [(r'/path/objectAlpha/', objectAlphaHandler)]
和
urls += [(r'/path/objectAlpha', objectAlphaHandler)]
但这些都没有用。
怎么啦?我怎么才能修好它?
更新
显然,据邮递员吉顿的这条线说,这个问题只发生在邮递员桌面上,而不是在浏览器上的邮递员上。
所以我试着在我的浏览器上发送请求表格邮递员,但我得到了
云代理错误:无法向保留地址发送请求。确保地址是可公开访问的,或者选择不同的代理。
因为,根据另一条线的说法
邮递员网站无法将请求发送到计算机的本地主机。它首先需要连接到您的PC与邮递员桌面客户端。
即使我遵循了答案中的指示
运行ndr。邮递员桌面,然后转到您的浏览器的邮递员工作空间->发送的请求,它将工作。
我还是得到了同样的
错误:解析错误:预期的HTTP/
在浏览器上的邮递员桌面和邮递员。
更新
在调试过程中,我尝试在我的终端的URL上抛出一个卷曲:
myuser@mymachine-VirtualBox:~$ curl --verbose "http://<target_machine_ip>:<target_machine_port>/path/objectAlpha"
我得到了:
*尝试: .*连接到 ()端口 (#0) > GET /orkpos5/receipt /1.1>:>User: curl/7.74.0 > Accept:*接收到HTTP/0.9 (当不允许时)*关闭连接0 curl:(1)在不允许时接收到HTTP/0.9
发布于 2022-01-14 14:50:11
解出
由于公开API是由第三部分构建的,供内部使用,因此不会向公众公开。
我不知道,所以在请求URL中,我为HTTP请求放置了众所周知的端口号,编号22 (参见著名的端口号列表。)。
为了解决这个问题,在请求URL中,我将<target_machine_port>
更改为实际公开API的端口。
https://stackoverflow.com/questions/70710068
复制相似问题