יש לי instance שמריץ API שבנוי ב-django-rest-framework, על גבי שרת ec2 של AWS,
הוא רץ בתוך קונטיינר (Docker) עם nginx, ומאזין בפורט 8000. (ה-security group מאפשרת בקשות של HTTP ו-HTTPS מכל כתובת).
זה הדף אינטרנט שאני מנסה להריץ ממנו בקשות:
<!DOCTYPE html>
<html>
<head>
<title>Password Authentication</title>
</head>
<body>
<h1>Authentication</h1>
<form id="authenticationForm">
<label for = "username">Enter your username:</label>
<input type = "text" id="username" name="username" required>
<label for="password">Enter Password:</label>
<input type="password" id="password" name="password" required>
<button type="button" id="submit">Submit</button>
</form>
<p id="message"></p>
<script>
document.getElementById("submit").addEventListener("click", function() {
let password = document.getElementById("password").value;
let username = document.getElementById("username").value;
let message = document.getElementById("message");
// Send a POST request to the Django API for password validation
fetch('http://<my ec2 public ip address>:8000/api/', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
credentials: 'include',
body: JSON.stringify({username: username, password: password }),
})
.then(response => response.json())
.then(data => {
if (data.correct) {
// Redirect to another page upon successful authentication
console.log(data)
message.textContent = 'Password is correct.';
window.location.href = 'json-upload.html';
}
else {
const cookies = data.cookies;
console.log(cookies);
// Display an error message if the password is incorrect
message.textContent = 'Password is incorrect. Please try again.';
}
});
});
</script>
</body>
</html>
כאשר אני מריץ בgoogle chrome התגובה לוקחת המון המון זמן ולבסוף מגיע:
כשהלוגים של הקונטיינר שמריץ את nginx בשרת כמובן אינם מראים את הבקשה כלל, לאחר שזו נכשלה.
באופן מוזר, לעתים אני מקבל כן לוגים כמו אלו:
172.104.11.51 - - [14/Nov/2023:08:58:57 +0000] "\x16\x03\x01\x00\x85\x01\x00\x00\x81\x03\x03\xF2\x94{A\xFBpRh\xB2\xBC$\xC3\xD0\xF8\x97\xF3\xD0\xB0\xBE\xF9IL5:\xA4SM\x80\xE1X7\xD9\x00\x00 \xC0/\xC00\xC0+\xC0,\xCC\xA8\xCC\xA9\xC0\x13\xC0\x09\xC0\x14\xC0" 400 157 "-" "-" "-"
או
147.235.193.187 - - [14/Nov/2023:08:55:25 +0000] "\x16\x03\x01\x02\x1A\x01\x00\x02\x16\x03\x03d\xD3\xA7\xE7\xB51v\x16Q7\xEE\x0EB\x06VJ\x8B\x91r\xF5(\xB1)\xD0\x83W#\xE8l\x0E<\xC4 \x02k\x19XnU&7\x84\xBF\x8FR;\xF6#\xBE\x17A\xDE\x10\xD2j\xA4\xEB:{L\x5C\xDA\x80\xF4\xA5\x00 \x8A\x8A\x13\x01\x13\x02\x13\x03\xC0+\xC0/\xC0,\xC00\xCC\xA9\xCC\xA8\xC0\x13\xC0\x14\x00\x9C\x00\x9D\x00/\x005\x01\x00\x01\xADjj\x00\x00\x00\x05\x00\x05\x01\x00\x00\x00\x00\xFE" 400 157 "-" "-" "-"
במקרים אלו, נוצרת בקשת preflight:
אציין כי מתי שאני מריץ את אותו קונטיינר בדיוק על המחשב שלי, הכל עובד פיקס, כך שאין בעיה עם CORS מצד הקוד בכל אופן.
אני עובד עם נטפרי, זה יכול להיות קשור לסינון? פתחתי את כל החסימות שהיו בהקלטות.
או שזה קשור לAWS?