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

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

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

API רחובות לפי שכונות\ שכונות לפי ערים

מתוזמן נעוץ נעול הועבר תכנות
47 פוסטים 9 כותבים 2.2k צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • yyyY מנותק
    yyyY מנותק
    yyy
    השיב לyyy ב נערך לאחרונה על ידי
    #24

    @yyy כתב בAPI רחובות לפי שכונות\ שכונות לפי ערים:

    @יוסף-בן-שמעון
    ממה שניסיתי פוסטמן ודפדפן עובד. הרצה מ-localhost לא עובד (סביבת אנגולר). ניסיתי להסיר בפוסטמן את ה-header של host וזה גם לא עבד כך שאולי זה קשור לזה.
    אשמח להתבדות.

    רק להדגיש בכל הסביבות וידאתי שאין שום שגיאה ב-URL ובסינטקס ורק הרספונס חוזר בעייתי.

    י תגובה 1 תגובה אחרונה
    0
    • י מנותק
      י מנותק
      יוסף בן שמעון
      השיב לyyy ב נערך לאחרונה על ידי
      #25

      @yyy כשהסרת את ההידר host זה לא עבד? אז כנראה זה ההידר שהוא מבקש, תנסה להוסיף אותו בבקשה מהשרת

      yyyY תגובה 1 תגובה אחרונה
      0
      • yyyY מנותק
        yyyY מנותק
        yyy
        השיב ליוסף בן שמעון ב נערך לאחרונה על ידי
        #26

        @יוסף-בן-שמעון כתב בAPI רחובות לפי שכונות\ שכונות לפי ערים:

        @yyy כשהסרת את ההידר host זה לא עבד? אז כנראה זה ההידר שהוא מבקש, תנסה להוסיף אותו בבקשה מהשרת

        למיטב הבנתי אי אפשר.

        י 2 תגובות תגובה אחרונה
        0
        • י מנותק
          י מנותק
          יוסף בן שמעון
          השיב לyyy ב נערך לאחרונה על ידי
          #27

          @yyy לא הבנתי, אתה מדבר על בקשה מהקליינט או מהשרת?
          אולי תעלה קטע קוד איך אתה שולח את הבקשה

          תגובה 1 תגובה אחרונה
          0
          • י מנותק
            י מנותק
            יוסף בן שמעון
            השיב לyyy ב נערך לאחרונה על ידי
            #28

            @yyy אולי יש כאן איזה קצר תקשורתי
            אתה מנסה לשלוח מהדפדפן בקשה ל API, לשם כך אתה משתמש בקליינט של אנגולר HttpClient?
            ומה השגיאה שחוזרת?

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

              @yyy כתב בAPI רחובות לפי שכונות\ שכונות לפי ערים:

              חסום לפניות שרת, רק קליינט יכול לגשת

              זה מילים חסרות משמעות.
              אין דרך בעולם לדעת אם קליינט שלח או שרת.
              נכון יותר לשאול למה לא עובד X מאשר לקבוע ש"זה המצב".

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

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

              תגובה 1 תגובה אחרונה
              2
              • yyyY מנותק
                yyyY מנותק
                yyy
                כתב ב נערך לאחרונה על ידי
                #30

                @יוסף-בן-שמעון כתב בAPI רחובות לפי שכונות\ שכונות לפי ערים:

                @yyy אולי יש כאן איזה קצר תקשורתי
                אתה מנסה לשלוח מהדפדפן בקשה ל API, לשם כך אתה משתמש בקליינט של אנגולר HttpClient?
                ומה השגיאה שחוזרת?

                זה הקוד האנגולרי:

                getNeighborhoodsByCity(cityName: string, nStartWith = "-1"): Observable<any[]> {
                     let tmpURL = this.neighborhoodsByCityURL;
                     tmpURL = tmpURL.replace("MyCityName", cityName);
                
                     if (nStartWith != "-1") {
                         tmpURL = tmpURL.replace("startWithKey=-1", "startWithKey=" + nStartWith)
                     }
                     return this.http.get<any[]>(tmpURL);
                 }
                

                (אני מתקשה להזיח כראוי, מקווה שנראה סביר)
                האמת שאני כבר ממש לא מבין. לפעמים זה עובד ולפעמים לא, בלי שום חוקיות שמצאתי.
                דוגמא:
                222.jpg
                כאשר הערכים שנשלחו בפרמטר של העיר הם
                אבו קורינאת (שבט) --> תקין
                ירושלים --> לא תקין
                בית שמש --> תקין
                בית שמש --> תקין
                בית שמש --> תקין
                ירושלים --> תקין
                ירושלים --> לא תקין
                ועוד כהנה וכהנה...

                השגיאה היא מסוג CORS, כפי שניתן לראות.
                להלן צילום מסך חלקי של השגיאה:error.jpg

                dovidD י 4 תגובות תגובה אחרונה
                0
                • dovidD מנותק
                  dovidD מנותק
                  dovid ניהול
                  השיב לyyy ב נערך לאחרונה על ידי
                  #31

                  @yyy כתב בAPI רחובות לפי שכונות\ שכונות לפי ערים:

                  זה הקוד האנגולרי:

                  זה אכן לא יכול לעבוד מאנגולר כי זה צד לקוח וזה מביא לשגיאת CORS.
                  אתה צריך לבקש את התשובה מהשרת שלך, והוא זה שצריך לבצע את הבקשה (הוא לא ייחסם בcors כי הוא לא במסגרת דפדפן).

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

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

                  yyyY י 2 תגובות תגובה אחרונה
                  2
                  • dovidD מנותק
                    dovidD מנותק
                    dovid ניהול
                    השיב לyyy ב נערך לאחרונה על ידי
                    #32

                    @yyy אני כעת רואה שלפעמים זה עובד ולפעמים לא,
                    זה אכן משונה, אולי זה קשור לפרוקסי של אנגולר (שזה רלוונטי במצב dev בלבד, בפרודקשיין הכל מתחיל ונגמר בדפדפן ולכן תמיד יהיה CORS).

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

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

                    י תגובה 1 תגובה אחרונה
                    1
                    • yyyY מנותק
                      yyyY מנותק
                      yyy
                      השיב לdovid ב נערך לאחרונה על ידי yyy
                      #33

                      @dovid כתב בAPI רחובות לפי שכונות\ שכונות לפי ערים:

                      זה אכן לא יכול לעבוד מאנגולר כי זה צד לקוח וזה מביא לשגיאת CORS.

                      כלומר מה שכתבת :

                      אין דרך בעולם לדעת אם קליינט שלח או שרת.

                      לכאורה אינו מדוייק, אמת?

                      @dovid כתב בAPI רחובות לפי שכונות\ שכונות לפי ערים:

                      @yyy אני כעת רואה שלפעמים זה עובד ולפעמים לא,
                      זה אכן משונה, אולי זה קשור לפרוקסי של אנגולר (שזה רלוונטי במצב dev בלבד, בפרודקשיין הכל מתחיל ונגמר בדפדפן ולכן תמיד יהיה CORS).

                      כשאני שולח ישר מה-URL של הדפדפן זה תמיד עובד.

                      י dovidD 3 תגובות תגובה אחרונה
                      0
                      • י מנותק
                        י מנותק
                        יוסף בן שמעון
                        השיב לdovid ב נערך לאחרונה על ידי
                        #34
                        פוסט זה נמחק!
                        תגובה 1 תגובה אחרונה
                        0
                        • י מנותק
                          י מנותק
                          יוסף בן שמעון
                          השיב לdovid ב נערך לאחרונה על ידי
                          #35

                          @dovid כתב בAPI רחובות לפי שכונות\ שכונות לפי ערים:

                          ה אכן משונה, אולי זה קשור לפרוקסי של אנגולר (שזה רלוונטי במצב dev בלבד, בפרודקשיין הכל מתחיל ונגמר בדפדפן ולכן תמיד יהיה CORS)

                          הבקשה הזו לא עוברת דרך הפרוקסי של אנגולר, כי זו פניה ישירה לדומיין חיצוני, הפרוקסי עובד רק בפניה לדומיין של הפיתוח

                          תגובה 1 תגובה אחרונה
                          2
                          • י מנותק
                            י מנותק
                            יוסף בן שמעון
                            השיב לyyy ב נערך לאחרונה על ידי
                            #36

                            @yyy כתב בAPI רחובות לפי שכונות\ שכונות לפי ערים:

                            זה הקוד האנגולרי:

                            קח טיפ, עדיף לבנות את ה URL עם המחלקה המובנית בדפדפן, זה יותר אלגנטי ויותר קל לתחזוקה

                            const tmpUrl = new URL('https://www.nadlan.gov.il/Nadlan.REST/Main/GetNeighborhoodsListByCityAndStartsWith');
                            tmpUrl.searchParams.append('cityName', 'ירושלים');
                            console.log(tmpUrl.href)
                            
                            תגובה 1 תגובה אחרונה
                            3
                            • י מנותק
                              י מנותק
                              יוסף בן שמעון
                              השיב לyyy ב נערך לאחרונה על ידי
                              #37

                              @yyy כתב בAPI רחובות לפי שכונות\ שכונות לפי ערים:

                              כאשר הערכים שנשלחו בפרמטר של העיר הם
                              אבו קורינאת (שבט) --> תקין
                              ירושלים --> לא תקין
                              בית שמש --> תקין
                              בית שמש --> תקין
                              בית שמש --> תקין
                              ירושלים --> תקין
                              ירושלים --> לא תקין
                              ועוד כהנה וכהנה...
                              השגיאה היא מסוג CORS, כפי שניתן לראות.

                              באמת תמוה, נראה באג (ממשלה בכל זאת)
                              לפעמים נשלח ההידר Access-Control-Allow-Origin פעם אחת בלבד, לפעמים הוא נשלח פעמיים עם תכנים שונים והדפדפן לא יודע איך להתמודד עם זה

                              תגובה 1 תגובה אחרונה
                              0
                              • י מנותק
                                י מנותק
                                יוסף בן שמעון
                                השיב לyyy ב נערך לאחרונה על ידי
                                #38

                                @yyy כתב בAPI רחובות לפי שכונות\ שכונות לפי ערים:

                                כלומר מה שכתבת :

                                אין דרך בעולם לדעת אם קליינט שלח או שרת.

                                לכאורה אינו מדוייק, אמת?

                                כן מדוייק, כי חסימת CROS מתבצעת בדפדפן, השרת שמקבל את הבקשה לא יכול לדעת מי שולח הבקשה, הוא יכול להניח הנחוות על סמך הידרים, אבל אתה יכול לשים איזה הידרים שבא לך ולעבוד על השרת

                                תגובה 1 תגובה אחרונה
                                2
                                • י מנותק
                                  י מנותק
                                  יוסף בן שמעון
                                  השיב לyyy ב נערך לאחרונה על ידי
                                  #39

                                  @yyy כתב בAPI רחובות לפי שכונות\ שכונות לפי ערים:

                                  כשאני שולח ישר מה-URL של הדפדפן זה תמיד עובד.

                                  כי חסימת CROS מתרחשת רק בבקשות חוצות דומיינים, דהיינו כשאתה שולח בקשת AJAX מתוך אתר A לדומיין B, אם אתה פותח לשונית חדשה ומכניס את ה URL אין בעיה של CROS

                                  תגובה 1 תגובה אחרונה
                                  2
                                  • י מנותק
                                    י מנותק
                                    יוסף בן שמעון
                                    כתב ב נערך לאחרונה על ידי
                                    #40

                                    למעשה הפיתרון הטוב ביותר להתמודד עם שגיונות הממשלה הוא כפי שהציע @dovid, להעביר את הבקשה דרך השרת
                                    אתה שולח לשרת שלך את שם העיר, השרת שולח את הבקשה לשרת ה API, ומחזיר את התוצאות לקליינט

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

                                      @yyy כתב בAPI רחובות לפי שכונות\ שכונות לפי ערים:

                                      כלומר מה שכתבת :

                                      אין דרך בעולם לדעת אם קליינט שלח או שרת.

                                      אין סתירה בין השניים.
                                      האתר הממשלתי הזה כמו כל אתר, לא יכול לדעת אם בקשה הגיעה מאנגולר (צד לקוח) או PHP/NODE (צד שרת).
                                      אלא שבצד לקוח יש לך בעיות "בירוקרטיות" עם הדפדפן שמסרב לאפשר לקוד לקבל את מבוקשו כי הוא רץ תחת דומיין אחר (במקרה שלך localhost).
                                      הייתי מציין לך את ההבדל אם לא שבדבריך ביטאת סיפור הפוך:

                                      לאחר בדיקה נוספת ה-URL חסום לפניות שרת, רק קליינט יכול לגשת, כך שפתרון מלא אין כאן.

                                      כלומר אתה טענת שבדפדפן עובד (התכוונת לשורת הכתובת) ובשרת (התכוונת לאנגולר)
                                      לא יכולתי לנחש מזה בעיית CORS כי אדרבא, זו בעיה שישנה רק בדפדפן (בקוד, שרץ תחת דומיין זר לכתובת המבוקשת).

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

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

                                      yyyY תגובה 1 תגובה אחרונה
                                      3
                                      • yyyY מנותק
                                        yyyY מנותק
                                        yyy
                                        כתב ב נערך לאחרונה על ידי yyy
                                        #42

                                        יש"כ לכל המסייעים עד עתה.
                                        כמצוות הרבנים @יוסף בן שמעון (איך מאזכרים שם עם רווח באמצע?) ו-@dovid, אני מנסה לבצע זאת דרך השרת.
                                        נתקלתי בבעיה בשליחת הפרמטר של שם העיר העברי לשרת, חיפשתי קצת ומצאתי שצריך לקודד קודם את השם.
                                        עשיתי את זה באמצעות encodeURI בצד האנגולר, הכנסתי ל-header, ואכן עובר ערך מקודד לשרת. דוגמא להידר (עיר:ירושלים ) המופיע ב-debug של chrome:

                                        "cityname: %D7%99%D7%A8%D7%95%D7%A9%D7%9C%D7%99%D7%9D"

                                        הבעיה נכון לעכשיו היא, שהשרת משום מה לא יודע לפענח את המידע בחזרה:
                                        כך נראה הקוד באנגולר:

                                        let httpOptions = {
                                              headers: new HttpHeaders({
                                                'Content-Type': 'application/json;charset=utf-8',
                                                cityName: encodeURI(currCityName)
                                              }),
                                            };
                                            return this.http.get<Neighborhood[]>(this.URL, httpOptions);
                                        

                                        ב- .net הקוד הוא כך

                                        string currCity= Request.Headers.FirstOrDefault
                                         (c=>c.Value== "cityName").ToString();
                                            currCity =   System.Net.WebUtility.UrlDecode(currCity);
                                        

                                        אני מקבל ב-currCity את הסטרינג הבא "[,]" , לא ברור לי מה המשמעות של זה (מערך ריק?)

                                        ניסיתי גם את הסינטקס הזה:

                                        Request.Headers.FirstOrDefault (c=>c.Key== "cityName").Value;
                                        

                                        אבל אני מקבל null ב-currCity.

                                        איך בדיוק מתפעלים את הפיענוח של ה-URI?
                                        לחילופין יש דרך אחרת להעביר מידע עברי ב-headers?

                                        dovidD תגובה 1 תגובה אחרונה
                                        1
                                        • yyyY מנותק
                                          yyyY מנותק
                                          yyy
                                          השיב לdovid ב נערך לאחרונה על ידי
                                          #43

                                          @dovid כתב בAPI רחובות לפי שכונות\ שכונות לפי ערים:

                                          אלא שבצד לקוח יש לך בעיות "בירוקרטיות" עם הדפדפן שמסרב לאפשר לקוד לקבל את מבוקשו כי הוא רץ תחת דומיין אחר (במקרה שלך localhost).

                                          לא הבנתי מה זה שונה מכל פניה לשרת. יש את הצד הפונה יהיה מי שלא יהיה, וברור שהוא פונה לגורם חיצוני שאינו הוא.
                                          מה מיוחד במקרה שלי שבו localost פונה ל-gov.il?

                                          כלומר אתה טענת שבדפדפן עובד (התכוונת לשורת הכתובת) ובשרת (התכוונת לאנגולר)

                                          כרגיל טעיתי, וכרגיל אני כאן כדי ללמוד.

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

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

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

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