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

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

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

גישה לresponse headers מתוך interceptor של axios

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

    אני מנסה להשתמש בinterceptors של axios כדי לגשת לheaders שחוזרות מהשרת, אבל בעוד הן בהחלט חוזרות מהשרת כמו שניתן לראות בdevtools:
    CleanShot 2022-11-07 at 13.39.07.png
    כשאני מנסה לגשת אליהן מתוך הinterceptor, הן פשוט לא נמצאות:
    47d60a61-e1e7-433b-ba7b-cbb6c6a963a8-CleanShot 2022-11-07 at 13.40.20.png
    מצורף קוד מופשט להדגמת הבעיה - סרבר פשוט בנוד + קוד HTML קטנטנן עם axios, שמדגים את הבעיה.
    אציין שההדגמה היא על נסיון גישה במקרה של שגיאה (=סטטוס HTTP שמסמל שגיאה), אבל גם בטיפול בתשובה מוצלחת (סטטוס 200) אין גישה לכותרות.
    ניסיתי לחפש לא מעט בגוגל, אבל מצאתי רק הסברים איך להגדיר header ולא איך לגשת לheader שחוזר מהשרת. כאן מישהו שאל לכאורה אותה שאלה אבל לא הבנתי מה שהוא הבין בסוף... 🙂
    אשמח מאוד אם מישהו מבין ממה הבעיה נגרמת. תודה!
    server:

    const http = require('http');
    
    const server = http.createServer((req, res) => {
        res.writeHead(401, {
            'Content-Type': 'application/json',
            'Access-Control-Allow-Origin': '*',
            'BlaHeader': 'BlaBla'
        });
        res.end(JSON.stringify({
            message: 'Please login'
        }));
    });
    
    server.listen(3000);
    

    client:

    <html>
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <script>
        const axiosInstance = axios.create({
            baseURL: 'http://localhost:3000'
        });
        axiosInstance.interceptors.response.use(
            response => response,
            error => {
                console.log(error.response);
                return Promise.reject(error);
            }
        );
        axiosInstance.get('/')
    </script>
    </html>
    

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

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

      @צדיק-תמים
      https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Expose-Headers

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

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

        @yossiz תודה!
        למה בעצם יש את המגבלה הזאת כברירת מחדל?

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

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

          @צדיק-תמים הוא הבין בסוף שהסיבה שאין גישה לכותרות היא בגלל שזה בקשת CORS, כלומר בקשה לדומיין אחר מהדומיין הנוכחי של הדף.
          במקרה כזה, גם אם עצם הבקשה מאופשרת ע"י Access-Control-Allow-Origin ולכן תשוןבה עצמה כן תתקבל, אבל הכותרות עדיין יהיו מוגבלות בגישה דרך הJS.
          בשביל לאפשר גישה לכותרות התשובה של CORS יש לאפשר אותם בכותרת Access-Control-Expose-Headers, יש לציין שיש כמה כותרות שמאופשרות כבר בברירת מחדל.

          אם גם במקרה שלך מדובר בCORS, אז זו התשובה המתאימה גם לך.

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

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

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

            @צדיק-תמים כתב בגישה לresponse headers מתוך interceptor של axios:

            @yossiz תודה!
            למה בעצם יש את המגבלה הזאת כברירת מחדל?

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

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

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

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

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

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

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