ABA


"אשמח לקבל עזרה עם פניה מ- Angular5 ב- Post לשרת"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #22226 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 22226
דוקטור חייק  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 14.12.06
40783 הודעות, 13 פידבק
   20:17   27.07.18   
אל הפורום  
  אשמח לקבל עזרה עם פניה מ- Angular5 ב- Post לשרת  
 
שלום לכולם,
הרבה זמן לא שאלתי כאן שאלה
אנסה להסביר את עצמי בלי דוגמאות קוד, כי את הקוד אני כותב בעבודה ועכשיו אני בבית.

הסיטואציה היא כזאת,
אני מפתח בעבודה ב- Angular5 ונכון לעכשיו - אין אף מערכת בייצור בארגון שלי בתשתית זו וכאשר יש לי בעיות - אני מתמודד לבד.

צד השרת הוא עמוד asmx בתשתית של .NET,
למה אתם שואלים ? כי צד השרת היא מערכת ותיקה שקיימת בייצור יותר מעשור.

כאשר אני פונה לשרת אני מקבל שגיאה 401 (הרשאות.. אני לא זוכר את הנוסח כי אני לא בעבודה עכשיו)

בהתחלה השגיאה התרחשה לי גם כאשר פניתי עם Get
אבל בעזרת חיפוש קטן בגוגל מצאתי את הפתרון
והוספתי withCredentials:true והבעיה נפתרה.

אבל כאשר אני מעדכן נתונים דרך post אני לא הצלחתי לפתור את הבעיה,
הוספתי withCredentials:true ואני ממשיך לקבל שגיאה 401.

אני מנסה לעשות POST דרך אובייקט של HttpClient ולא Http.

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


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  אתה עובד עם CORS? Zeet3x  28.07.18 12:25 1
     אני עובד עם IIS בצד השרת דוקטור חייק  28.07.18 14:35 2
         אף פעם לא עבדתי עם .NET או משהו Zeet3x  28.07.18 16:25 3
             זה לא המצב דוקטור חייק  31.07.18 15:17 9
                 מסתדר בול עם מה שהציעו לך כאן bmelad  01.08.18 18:07 14
  יש אונטנטיקציה בשרת שלך שלא מאפשר לך לגשת ל RESOURCE. VeNom  28.07.18 16:44 4
     אז הוא יודע להעביר ב- GET אבל הוא לא יודע ב- POST ? דוקטור חייק  31.07.18 15:18 10
  יש מצב שאין הרשאות כתיבה בכלל? afroman50 29.07.18 18:13 5
  תבדוק שה anonymous auth על enable hank_mudy 29.07.18 22:54 6
  הבעיה לא קשורה לANGULAR תפתתפת 30.07.18 07:43 7
  שאלה לכולם דוקטור חייק  31.07.18 15:15 8
     401 UNAUTHORIZED תפתתפת 01.08.18 07:52 11
         ה- ENDPOINT אכן תומך ב- POST דוקטור חייק  01.08.18 11:00 12
             אי אפשר לדבג ככה sza  01.08.18 17:34 13
  עדכון - ככה פתרתי את הבעיה דוקטור חייק  02.08.18 12:24 15

       
Zeet3x  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 14.2.12
9976 הודעות, 24 פידבק
   12:25   28.07.18   
אל הפורום  
  1. אתה עובד עם CORS?  
בתגובה להודעה מספר 0
 
   לי הייתי בעיה שנשמעת דומה לשלך רק שעבדתי עם nodejs... ושהוספתי credentials: true לCORS זה הסתדר (בנוסף לבקשת HTTP)


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
דוקטור חייק  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 14.12.06
40783 הודעות, 13 פידבק
   14:35   28.07.18   
אל הפורום  
  2. אני עובד עם IIS בצד השרת  
בתגובה להודעה מספר 1
 


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Zeet3x  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 14.2.12
9976 הודעות, 24 פידבק
   16:25   28.07.18   
אל הפורום  
  3. אף פעם לא עבדתי עם .NET או משהו  
בתגובה להודעה מספר 2
 
   אז קשה לי להצביע לך על זה ספציפית... אבל אני מניח שכנראה אתה לא מגדיר CORS ואז אתה לא יכול לבצע פעולות מחוץ לשרת שלך. הייתי מתחיל בלבדוק את זה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
דוקטור חייק  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 14.12.06
40783 הודעות, 13 פידבק
   15:17   31.07.18   
אל הפורום  
  9. זה לא המצב  
בתגובה להודעה מספר 3
 
כי פניות GET עובדות,
גם בשרת צדדי, וגם ב- LOCAL HOST.

רק POST עושה בעיות.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
bmelad 
חבר מתאריך 23.12.14
79 הודעות
   18:07   01.08.18   
אל הפורום  
  14. מסתדר בול עם מה שהציעו לך כאן  
בתגובה להודעה מספר 9
 
   אכן, גישת Cross Domain תיחסם לך על בקשות POST ולא תיחסם על בקשות GET.

תפתח Developer Tools, יש סיכוי סביר שרגע לפני ה- POST שלך, הדפדפן שולח בקשת OPTIONS אל השרת שאליו אתה מנסה לפנות ומפיל אותך בהתאם לתגובה שמקבל.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
VeNom  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 7.6.02
7922 הודעות, 1 פידבק
   16:44   28.07.18   
אל הפורום  
  4. יש אונטנטיקציה בשרת שלך שלא מאפשר לך לגשת ל RESOURCE.  
בתגובה להודעה מספר 0
 
   תברר קודם, איזה אוטנטיקציה צריך בשביל לפנות לסרביס.
האם מדובר ב COOKIE של FORMS AUTHENTICATION או משהו אחר מבוסס HEADERS כמו BASIC AUTHENTICATION?

כי כאשר אתה מוסיף WITHCREDENTIALS=TRUE בבקשת XHR, הוא בעצם יודע להעלות COOKIES ו HEADERS גם לבקשות שהם CROSS DOMAIN.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
דוקטור חייק  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 14.12.06
40783 הודעות, 13 פידבק
   15:18   31.07.18   
אל הפורום  
  10. אז הוא יודע להעביר ב- GET אבל הוא לא יודע ב- POST ?  
בתגובה להודעה מספר 4
 


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
afroman50
חבר מתאריך 16.8.04
12555 הודעות, 1 פידבק
   18:13   29.07.18   
אל הפורום  
  5. יש מצב שאין הרשאות כתיבה בכלל?  
בתגובה להודעה מספר 0
 


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
hank_mudy
חבר מתאריך 28.8.12
1186 הודעות
   22:54   29.07.18   
אל הפורום  
  6. תבדוק שה anonymous auth על enable  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
תפתתפת לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 10.6.03
13866 הודעות, 3 פידבק
   07:43   30.07.18   
אל הפורום  
  7. הבעיה לא קשורה לANGULAR  
בתגובה להודעה מספר 0
 
   אתה תוכל לסמלץ את הבקשה שאתה מבצע גם באמצעות POSTMAN למשל.
לדעתי הבעיה היא ב ENDPOINT שכתבת או כמו שחבר'ה רשמו פה - קטע של COOKIE, הרשאות וכאלה.

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

קופון 15% הנחה ל myprotein
https://www.myprotein.co.il/referrals.list?applyCode=ORON-R4


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
דוקטור חייק  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 14.12.06
40783 הודעות, 13 פידבק
   15:15   31.07.18   
אל הפורום  
  8. שאלה לכולם  
בתגובה להודעה מספר 0
 
קודם כל תודה על ההתייחסות,
אבל שאלה עקרונית.

מדוע GET עובד ו- POST לא עובד ?


let requestOptions = new RequestOptions();
requestOptions.search = serviceParameters;
requestOptions.withCredentials = true;

return this.http.get(path...., requestOptions)

עובד


const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json'
})
, observable: 'body'
, params: null
, reportProgress: true
, withCredentials: true
};

return this.httpClient.post(path..., parms.., httpOptions )

מחזיר 401 (פונה לאותו השרת)


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
תפתתפת לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 10.6.03
13866 הודעות, 3 פידבק
   07:52   01.08.18   
אל הפורום  
  11. 401 UNAUTHORIZED  
בתגובה להודעה מספר 8
 
   ה - ENDPOINT תומך POST?
תבדוק אם אתה מעביר SESSION \ COOKIE לצורך AUTH
הכי טוב לדבאג את הסרבר ולראות איפה זה נופל.

קופון 15% הנחה ל myprotein
https://www.myprotein.co.il/referrals.list?applyCode=ORON-R4


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
דוקטור חייק  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 14.12.06
40783 הודעות, 13 פידבק
   11:00   01.08.18   
אל הפורום  
  12. ה- ENDPOINT אכן תומך ב- POST  
בתגובה להודעה מספר 11
 
ומדובר ב- windows auth


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
sza  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 26.4.02
12357 הודעות, 22 פידבק
   17:34   01.08.18   
אל הפורום  
  13. אי אפשר לדבג ככה  
בתגובה להודעה מספר 12
 

כנס לקריאה בדפדפן ותעתיק את הheaders של הבקשה,
תשווה אותם לאלו שנשלחו בבקשת get, בגלל שלא השתמשת באותו ajax extension יכול להיות שהבקשה נבנתה בסופו של דבר עם headers שונים.
אם עדיין לא מצאת, תכניס את הבקשה ל"יוצר בקשות" (postman לדוגמה) ותנסה להבין איפה זה נתקע.
תמיד כדאי להשוות לבקשת POST כמה שיותר דומה שכן מצליחה לעבור (אפילו אם נכתבה בפרימוורק שונה, זה לא משנה)..

בהצלחה


צחי.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
דוקטור חייק  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 14.12.06
40783 הודעות, 13 פידבק
   12:24   02.08.18   
אל הפורום  
  15. עדכון - ככה פתרתי את הבעיה  
בתגובה להודעה מספר 0
 
מצאתי המון תוצאות בגוגל שהן לא רלוונטיות,
לבסוף מצאתי את ההתכתבות הבאה:

https://github.com/angular/angular/issues/15805

שמתי לב לפוסט הבא:


I'm in an Windows env. with NTLM, I got the same problem with CORS. I resolve it by removing headers from the options, it's feels like when adding headers, withCredentials gets overruled! I'm using http 4.3.1
Gives 401
let body = JSON.stringify(data);
let headers = new Headers({'Content-Type': 'application/json'});
let options = new RequestOptions({headers: headers, withCredentials: true});
Works:
let body = JSON.stringify(data);
let options = new RequestOptions({withCredentials: true});

והבנתי שברגע שמגדירים Content-Type יש את הבעיה.
(והייתי חייב להגדיר כי השרת לא הכיר text/plan, שזה גם משהו שעם GET לא נתקלתי בו..)

ואז ראיתי עוד פוסט:


I upgrading from Angularjs to Angular 4, after authentication, I call WS spring to get a list of objects :
angularjs (it's working) : the request header contains a parameter called Cookie, his value include all parameters from Set-Cookie response
angular 4 (KO 401) : Cookie parameter not contains Set-Cookie response parameters.
Using or not header/withCredentials, I have always 401 Unauthorized :
Spring exception : org.springframework.security.authentication.InsufficientAuthenticationException: Full authentication is required to access this resource
this.headers.append( 'Content-Type', 'application/x-www-form-urlencoded' );

והגדרתי, ואם להיות אמיתי, בלי להבין למה,
את ה- Content-Type הבא: application/x-www-form-urlencoded

והופ - זה עובד

תודה לכולם


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net