דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. רשתות
  3. התחברות ל-API שרץ על AWS ec2

התחברות ל-API שרץ על AWS ec2

מתוזמן נעוץ נעול הועבר רשתות
3 פוסטים 3 כותבים 151 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • א מנותק
    א מנותק
    איש_ימיני
    כתב ב נערך לאחרונה על ידי איש_ימיני
    #1

    יש לי 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 התגובה לוקחת המון המון זמן ולבסוף מגיע:
    00246f64-44b7-4d64-927a-19a4cbf42ad4-image.png
    כשהלוגים של הקונטיינר שמריץ את 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:
    209866a9-fc2f-4d78-b9cf-d20b00c9b04c-image.png
    אציין כי מתי שאני מריץ את אותו קונטיינר בדיוק על המחשב שלי, הכל עובד פיקס, כך שאין בעיה עם CORS מצד הקוד בכל אופן.
    אני עובד עם נטפרי, זה יכול להיות קשור לסינון? פתחתי את כל החסימות שהיו בהקלטות.
    או שזה קשור לAWS?

    צדיק תמיםצ תגובה 1 תגובה אחרונה
    0
    • צדיק תמיםצ מנותק
      צדיק תמיםצ מנותק
      צדיק תמים
      השיב לאיש_ימיני ב נערך לאחרונה על ידי צדיק תמים
      #2

      @איש_ימיני כתב בהתחברות ל-API שרץ על AWS ec2:

      הוא רץ בתוך קונטיינר (Docker) עם nginx, ומאזין בפורט 8000. (ה-security group מאפשרת בקשות של HTTP ו-HTTPS מכל כתובת).

      איזה פורט פתחת? HTTP ו-HTTPS זה בד"כ אומר פורט 80 ופורט 443, אחרת קוראים לזה TCP
      תנסה לפתוח בחומת אש את פורט 8000
      כמו כן תוודא עם CURL וכדו' בתוך השרת שאכן האתר נגיש בlocalhost:8000

      Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
      טיפים

      תגובה 1 תגובה אחרונה
      1
      • dovidD מחובר
        dovidD מחובר
        dovid ניהול
        כתב ב נערך לאחרונה על ידי dovid
        #3

        כפי ש@צדיק-תמים כתב, http\s זה סה"כ קיצור לTCP:80/TCP:443, כך שאתה צריך לפתוח TCP 8000.
        בעיית איטיות זה תמיד חומת אש, אף פעם לא CORS.
        לשם ההבנה, CORS זו חסימה של צד לקוח, לא של צד שרת. כלומר מבחינת הרשת הכל עובד פיקס השרת לא חושב בכלל פעמיים לפי הref או כל דבר אחר, ןלולי הpreflight שנועד לחסוך התשובה אפילו הייתה כבר מגיעה למחשב לפני השגיאה ורק אז הדפדפן חוסם לJS אפשרות לגשת אליה. בcurl או כלי אחר חוץ מהדפדפן התשובה מתקבלת יופי, אין מושג של CORS.

        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

        בכל נושא אפשר ליצור קשר dovid@tchumim.com

        תגובה 1 תגובה אחרונה
        1

        בא תתחבר לדף היומי!
        • התחברות

        • אין לך חשבון עדיין? הרשמה

        • התחברו או הירשמו כדי לחפש.
        • פוסט ראשון
          פוסט אחרון
        0
        • דף הבית
        • קטגוריות
        • פוסטים אחרונים
        • משתמשים
        • חיפוש
        • חוקי הפורום