【发布时间】:2020-09-06 18:55:45
【问题描述】:
所以,我有一个服务部署到 ECS,我正在尝试使用以下代码向该服务发送 HTTP 请求:
connection = http.client.HTTPConnection(url)
rawRequest={
"BotAlias": "botName",
"UserID": "user",
"AudioFile": base64.b64encode(audio).decode("utf-8")
}
data = json.dumps(rawRequest)
connection.request("POST", "/service-path/protobuf-call",
data, {"Content-type": "application/json"})
response = connection.getresponse()
print(response.read())
return json.loads(response.read().decode())
我的 ALB 的 80 端口的规则是重定向到端口 443,状态码为 HTTP_301。 对于端口 443,我有一个默认规则,可以根据请求的路径重定向到每个服务的目标组。但是,当我实际运行该服务时,我一直得到 301 作为响应,而不是我正在寻找的 lex bot 响应。有什么想法吗?提前致谢!
【问题讨论】:
-
这个问题真的与 AWS 负载均衡器或 Lex 无关。您的 Python 代码只是获取它收到的第一个响应,而不是查看 301 重定向响应并向重定向位置发出另一个响应。如果您只是将应用程序配置为始终在端口 443 上使用 HTTPS,显然会更有效(网络流量更少),但如果您希望代码处理重定向,则应搜索“Python Follow Redirects”。
标签: python http http-redirect