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

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

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. לא מצליח לשלוח headers באנגולר

לא מצליח לשלוח headers באנגולר

מתוזמן נעוץ נעול הועבר תכנות
26 פוסטים 3 כותבים 1.0k צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • yossizY מנותק
    yossizY מנותק
    yossiz
    השיב לavi rz ב נערך לאחרונה על ידי
    #21

    @avi-rz מכיון שהגדרת את הפרוקסי על נתיב api/ אתה צריך להוסיף קידומת זו לכל קריאה לשרת.

    האם זה עובד:

    this.http.post<any>('/api/sessions/test/', { userName: 'avi' }, { headers });
    

    ?

    📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

    A תגובה 1 תגובה אחרונה
    2
    • A מנותק
      A מנותק
      avi rz
      השיב לyossiz ב נערך לאחרונה על ידי
      #22

      @yossiz אמר בלא מצליח לשלוח headers באנגולר:

      @avi-rz מכיון שהגדרת את הפרוקסי על נתיב api/ אתה צריך להוסיף קידומת זו לכל קריאה לשרת.

      האם זה עובד:

      this.http.post<any>('/api/sessions/test/', { userName: 'avi' }, { headers });
      

      ?

      error:

      message: "Http failure response for http://localhost:4200/api/sessions/test/: 504 Gateway Timeout"
      name: "HttpErrorResponse"
      ok: false
      status: 504
      statusText: "Gateway Timeout"
      url: "http://localhost:4200/api/sessions/test/"
      

      גם בטרמינל הוא הדפיס לי שגיאה:

      [HPM] Error occurred while trying to proxy request /sessions/test/ from localhost:4200 to http://localhost:3000/ (ECONNREFUSED) (https://nodejs.org/api/errors.html#errors_common_system_errors)
      
      
      A תגובה 1 תגובה אחרונה
      0
      • A מנותק
        A מנותק
        avi rz
        השיב לavi rz ב נערך לאחרונה על ידי avi rz
        #23

        @avi-rz
        סליחה!
        לא שמתי לב השרת שלי היה "סגור",

        תודה רבה ממש - זה עובד!
        לגבי ה"api" איך אני מבטל אותו?
        ברגע שאני יעלה את זה לשרת ואני לא יצטרך את כל הפרוקסי, אני יצטרך לעבור על כל הבקשות למחוק את ה "api" שאני אכתוב לפני כל בקשה?

        dovidD תגובה 1 תגובה אחרונה
        1
        • dovidD מנותק
          dovidD מנותק
          dovid ניהול
          השיב לavi rz ב נערך לאחרונה על ידי dovid
          #24

          @avi-rz
          אתה כבר טיפלת בזה בהגדרה של pathRewrite.
          תסתכל שוב בתיעוד תחת הכותרת
          Rewrite the URL path
          זה כלל שמוחק מהURL את החלק הלא רלוונטי באמת לשרת הסופי, ושהוא רק לצרכי זיהוי להעברה.
          הגדרת את זה כבר כאמור כפי שצריך.

          קצת פצעי אוהב: מקוה שיש לך מסקנות על צורת התגלגלות הנושא פה: תיצמד פחות לאבחנות שלך ותהיה יותר פתוח לשמוע וללמוד, וכמובן לא לפחד לשאול ובתדירות גבוהה יותר. תפציץ.
          אבל אני חייב לציין לשבח את כל הפלט וההגדרות שהבאת ללא עצלות (אולי זה גורם לך לשאול הרבה פחות, גם אם כן זה שווה), היפך "הנחמדים" שכותבים "עדיין לא עובד" ותו לא.
          נ.ב. אפשר להעתיק מקונסול (בוחרים ואז CTRL+SHIFT+C), לא כדאי אף פעם להביא תמונות של קוד.

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

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

          A תגובה 1 תגובה אחרונה
          3
          • A מנותק
            A מנותק
            avi rz
            השיב לdovid ב נערך לאחרונה על ידי
            #25

            @dovid אמר בלא מצליח לשלוח headers באנגולר:

            אתה כבר טיפלת בזה בהגדרה של pathRewrite.

            נכון, זה מה שציינתי, ולכן הבאתי את התיעוד הזה ג"כ כאן

            @avi-rz אמר בלא מצליח לשלוח headers באנגולר:

            Rewrite the URL path

            The pathRewrite proxy configuration option lets you rewrite the URL path at run time. For example, you can specify the following pathRewrite value to the proxy configuration to remove "api" from the end of a path.

                                                                                                                                        {                                                                                                                                                                              "/api": {                                                                                                                                                                                "target": "http://localhost:3000",                                                                                                                                                                                "secure": false,                                                                                                                                                                                "pathRewrite": {                                                                                                                                                                                  "^/api": ""                                                                                                                                                                                }                                                                                                                                                                              }                                                                                                                                                                            }                                            
            

            If you need to access a backend that is not on localhost, set the changeOrigin option as well. For example:

                                                                                                                                        {                                                                                                                                                                              "/api": {                                                                                                                                                                                "target": "http://npmjs.org",                                                                                                                                                                                "secure": false,                                                                                                                                                                                "pathRewrite": {                                                                                                                                                                                  "^/api": ""                                                                                                                                                                                },                                                                                                                                                                                "changeOrigin": true                                                                                                                                                                              }                                                                                                                                                                            }                                            
            

            אבל זה לא עבד לי, עד שלא הוספתי את הapi כמו שיוסי אמר,

            @yossiz אמר בלא מצליח לשלוח headers באנגולר:

            האם זה עובד:
            this.http.post<any>('/api/sessions/test/', { userName: 'avi' }, { headers });

            למה באמת?

            @dovid אמר בלא מצליח לשלוח headers באנגולר:

            נ.ב. אפשר להעתיק מקונסול (בוחרים ואז CTRL+SHIFT+C), לא כדאי אף פעם להביא תמונות של קוד.

            אכן, (עובד לי ctrl+c לבד) -מה שהבאתי למעלה זה לא שגיאה שצריך להעתיק או משהו, רק בסה"כ ראיה למה שכתבתי כל הזמן - ורציתי להמחיש. - עכ"פ ממש תודה על ההכוונה.

            dovidD תגובה 1 תגובה אחרונה
            1
            • dovidD מנותק
              dovidD מנותק
              dovid ניהול
              השיב לavi rz ב נערך לאחרונה על ידי dovid
              #26

              @avi-rz אני אחזור בקצרה על ה"תכנית" של הפתרון, ציפיתי שתקרא ותבין לבד אבל אולי זה מסובך פעם ראשונה.
              יש לנו שתי שרתים, אחד לקבצים הסטטיים (פורט 4000) והשני לדינמיות (3000).
              כיון שבד"כ כשנגמור את הפיתוח זה יהיה שרת אחד, אז אנחנו רוצים כבר עכשיו לדמות שזה שרת אחד.
              איך אפשר? הולכים לשרת א' שזה הserve של אנגולר (4000), ומבקשים ממנו לטפל גם בבקשות המופנות לשרת ב' (זה נקרא פרוקסי, כי הוא לא באמת יודע מה לעשות, הוא יפנה לשרת ה3000 ויקבל את התשובה ויחזיר אותה ללקוח כאילו בשם עצמו כמו עיתונאי עלוב). כעת נחוץ להגדיר לו שני דברים א. איך לזהות בקשה שממוענת לשרת ב' (שיידע לא לחפש לזה קובץ או ניתוב אנגולרי), ב. איפה השרת ב' כדי להעביר לו את הבקשה ולקבל את התשובה ולהחזיר אותה לדפדפן.

              אז א' מבוצע בקובץ proxy.conf.json ע"י המאפיין "/api" שמשמעותו: טיפול מיוחד בבקשה שמתחילה ב/api.
              לכן עליך לערוך את כל הבקשות המופנות לשרת (3000), ולדאוג שהם לא יפנו לשרת 3000 (אלא לכתובת הנוכחית, אותו שרת של הקבצים הסטטיים) רק שיתחילו עם api למען הזיהוי שהם בעצם צריכים להיות מופנים.
              אם באמת כל הכתובות היו מתחילות בapi בשרת ה3000, אז פה היינו מסיימים. הבעיה שזה תוספת ששמנו רק לזיהוי עבור הserve של אנגולר שיידע איזה כתובת לטפל כפרוקסי, ובאמת אנחנו צריכים בקוד של השרת שלנו לקבל את הכתובת ללא הapi!
              לכן יש את הpathRewrite שמבצע חיפוש והחלפה, מחפש את api ומחליף במחרוזת ריקה.

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

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

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

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

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

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