在博客文章中,我使用以下PHP来设置响应的内容类型:
header('content-type: application/json; charset=utf-8');
Run Code Online (Sandbox Code Playgroud)
我刚刚对该帖子发表评论说content-type需要大写,Content-type.它是否正确?它似乎适用于所有小写的我,我假设HTTP标题不区分大小写.或者它只是工作,因为浏览器很好?
我为没有身份验证的公共端点设置了AWS API网关。它连接到触发Lambda的WebSocket。
我正在通过https://pypi.org/project/websocket_client/与Python的websocket-clientlib 建立连接。
我注意到连接将在大约10%的时间内失败,并且随着负载的增加而变得更糟。正如我的常规API网关设置所说,我找不到任何让我感到烦恼的地方Your current account level throttling rate is 10000 requests per second with a burst of 5000 requests.。除此之外,每秒只有2-3个请求经常会触发问题。
同时失败响应会像 {u'message': u'Forbidden', u'connectionId': u'Z2Jp-dR5vHcCJkg=', u'requestId': u'Z2JqAEJRvHcFzvg='}
我进入了CloudWatch日志洞察,并搜索了连接ID和请求ID。API网关的日志组将找不到任何一个ID的结果。但是,在我的Lambda上进行搜索(在websocket connect上触发)时,将带有该连接ID的日志。日志显示一切正常运行。lambda只是运行一个将触发的MySQL查询。
尽管lambda可以按预期工作,但为什么我会得到禁止的响应?
获取消息时存在的问题:禁止从AWS API网关回复,似乎可以解决某些私有端点是否始终返回禁止的问题。我的用例没有任何内容。
更新
我认为这可能与locust.io或python有关,而我正在每秒使用python进行连接。我在我的机器上安装了https://www.npmjs.com/package/wscat,并反复尽可能快地连接和关闭。我没有收到Forbidden消息。由于我不确定我的连接方式在某些时候会随机向您吐出一条Forbidden消息,因此这更加令人困惑。
class SocketClient(object):
def __init__(self, host):
self.host = host
self.session_id = uuid4().hex
def connect(self):
self.ws = websocket.WebSocket()
self.ws.settimeout(10)
self.ws.connect(self.host)
events.quitting += self.on_close
data = self.attach_session({}) …Run Code Online (Sandbox Code Playgroud)