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

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

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

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

מתוזמן נעוץ נעול הועבר תכנות
5 פוסטים 3 כותבים 169 צפיות 2 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • צדיק תמיםצ מנותק
    צדיק תמיםצ מנותק
    צדיק תמים
    כתב ב נערך לאחרונה על ידי צדיק תמים
    #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
    • צדיק תמיםצ צדיק תמים

      אני מנסה להשתמש ב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>
      
      yossizY מחובר
      yossizY מחובר
      yossiz
      כתב ב נערך לאחרונה על ידי
      #2

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

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

      צדיק תמיםצ תגובה 1 תגובה אחרונה
      3
      • yossizY yossiz

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

        צדיק תמיםצ מנותק
        צדיק תמיםצ מנותק
        צדיק תמים
        כתב ב נערך לאחרונה על ידי צדיק תמים
        #3

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

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

        dovidD תגובה 1 תגובה אחרונה
        0
        • צדיק תמיםצ צדיק תמים

          אני מנסה להשתמש ב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>
          
          dovidD מחובר
          dovidD מחובר
          dovid
          ניהול
          כתב ב נערך לאחרונה על ידי dovid
          #4

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

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

          • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
          • בכל נושא אפשר ליצור קשר dovid@tchumim.com
          תגובה 1 תגובה אחרונה
          2
          • צדיק תמיםצ צדיק תמים

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

            dovidD מחובר
            dovidD מחובר
            dovid
            ניהול
            כתב ב נערך לאחרונה על ידי
            #5

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

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

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

            • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
            • בכל נושא אפשר ליצור קשר dovid@tchumim.com
            תגובה 1 תגובה אחרונה
            3
            תגובה
            • תגובה כנושא
            התחברו כדי לפרסם תגובה
            • מהישן לחדש
            • מהחדש לישן
            • הכי הרבה הצבעות


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

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

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