有人知道这段代码有什么问题吗.来自api网关的地址返回{"message". "Missing Authentication Token"}.所有的代码都是通过无服务器框架部署在AWS上。"Missing Authentication Token"}.所有代码都是由AWS上的无服务器框架部署的。
JS自定义.js
var socket;
// Connect to the WebSocket and setup listeners
function setupWebSocket(username, token) {
socket = new ReconnectingWebSocket(" {api endpoint}?token=" + token);
socket.onopen = function(event) {
data = {"action": "getRecentMessages"};
socket.send(JSON.stringify(data));
};
socket.onmessage = function(message) {
var data = JSON.parse(message.data);
data["messages"].forEach(function(message) {
if ($("#message-container").children(0).attr("id") == "empty-message") {
$("#message-container").empty();
}
if (message["username"] === username) {
$("#message-container").append("<div class='message self-message'><b>(You)</b> " + message["content"]);
} else {
$("#message-container").append("<div class='message'><b>(" + message["username"] + ")</b> " + message["content"]);
}
$("#message-container").children().last()[0].scrollIntoView();
});
};
}
// Sends a message to the websocket using the text in the post bar
function postMessage(token){
var content = $("#post-bar").val();
if (content !== "") {
data = {"action": "sendMessage", "token": token, "content": content};
socket.send(JSON.stringify(data));
$("#post-bar").val("");
}
}
处理程序.py
def _send_to_connection(connection_id, data, event):
gatewayapi = boto3.client("apigatewaymanagementapi",
endpoint_url="https://" + event["requestContext"]["domainName"] +
"/" + event["requestContext"]["stage"])
return gatewayapi.post_to_connection(ConnectionId=connection_id,
Data=json.dumps(data).encode('utf-8'))
与消息相反,这个问题其实并不是丢失了认证令牌。当您访问的端点不完全正确时,API Gateway会返回相同的消息;即不存在,可能是由于一些印刷错误或轻微的错误配置。我建议确认你的端点是有效的,然后重新检查。
你得到这个消息的原因是,如果他们返回404,这意味着你现在知道你调用的(无效)端点不存在。但这也意味着你可以做一个蛮力的过程,检查所有可能的端点,任何没有返回404的端点确实存在,但在某种防火墙、认证系统或API Key后面。通过为所有端点返回403,即使它们不存在,AWS正在改善他们的安全态势。这和在登录表单上不返回 "用户名不存在 "这样的信息是一样的道理,因为否则有人可以根据你的错误信息找到找到有效的用户名。
希望能帮到你