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

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

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ארכיון code613m
  4. ASP.NET MVC: בעיה בהחזרת טוקן השתול בטופס

ASP.NET MVC: בעיה בהחזרת טוקן השתול בטופס

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

    יש לי טופס שאני רוצה לשלוח לשרת ואני כולל בו טוקן כדי למנוע מתקפת CSRF - Cross site request forgery.
    אולם הבעיה היא שאני מקבל שגיאה מספר 500 עם הטענה שהטוקן לא קיים בדף..
    אשמח לעזרה!

    <form action="~/Home/Create" method="get" id="myform">
                @Html.AntiForgeryToken()
                <input type="submit" value="הוסף מוצר" class="btn btn-primary" />
            </form>
    

    תודה רבה רבה!

    פורסם במקור בפורום CODE613 ב22/12/2015 11:05 (+02:00)

    תגובה 1 תגובה אחרונה
    0
    • A מנותק
      A מנותק
      avr416
      כתב ב נערך לאחרונה על ידי
      #2

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

      הפתרון שהוא מציע הוא טוב רק אם אני כותב את הקוד עצמו גם בRAZOR. (ואז אני יכול לקרוא לפונקציות של C#).

      הבעיה היא שאני כותב את קובץ הJS בתור קובץ נפרד, ושם אני לא יכול להשתמש ביכולות של הRAZOR.

      האם ישנה דרך לקרוא למתודות הללו בצורה אחרת, או לבצע את אותו דבר בצורה שונה?

      תודה רבה רבה מראש!!
      אברהם.

      פורסם במקור בפורום CODE613 ב31/12/2015 10:26 (+02:00)

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

        מה זה קובץ JS נפרד? לא שיש בעיה כל שהיא לשלוח JS עם השתלה של טוקן עם RAZOR (פשוט chtml שמכיל רק סקריפט עטוף בתגית סקריפט) או בלעדיו (פשוט לכתוב את הJS עם שומר מקום ולמלאות עם string.format). רק שאמור להיות פתרון פשוט בהרבה.
        הרי הטופס מתבסס על קלט מהלקוח, לא כן? הקלט הזה שוכן בקומבינציה כל שהיא בדף HTML, לא?
        תוכל לתאר את התהליך?
        כל הרעיון של טוקן זה לוודא המשכיות. רק זה שביקש את הטופס (הדף של האתר שלך) יכול לשלוח אותו.

        פורסם במקור בפורום CODE613 ב04/01/2016 11:23 (+02:00)

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

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

        תגובה 1 תגובה אחרונה
        1
        • A מנותק
          A מנותק
          avr416
          כתב ב נערך לאחרונה על ידי
          #4

          @דוד ל.ט.

          מה זה קובץ JS נפרד? לא שיש בעיה כל שהיא לשלוח JS עם השתלה של טוקן עם RAZOR (פשוט chtml שמכיל רק סקריפט עטוף בתגית סקריפט)

          התכוונתי שהקוד של הJS לא נכתב באותו דף של הHTML, ולכן הוא נשמר עם סיומת JS.
          לא חשבתי על הרעיון לשמור אותו בתור קובץ cshtml.
          @דוד ל.ט.

          או בלעדיו (פשוט לכתוב את הJS עם שומר מקום ולמלאות עם string.format).

          לא הבנתי איך אני כותב קובץ בפורמט JS ומשתמש בשומר מקום, אשמח אם תוכל לפרט..
          @דוד ל.ט.

          רק שאמור להיות פתרון פשוט בהרבה. הרי הטופס מתבסס על קלט מהלקוח, לא כן? הקלט הזה שוכן בקומבינציה כל שהיא בדף HTML, לא?
          תוכל לתאר את התהליך?
          כל הרעיון של טוקן זה לוודא המשכיות. רק זה שביקש את הטופס (הדף של האתר שלך) יכול לשלוח אותו.

          חשבתי שזה אמור להיות מאד פשוט אבל הסתבכתי וזה לא בדיוק עובד..
          הנה זה מה שכתבתי:
          תודה רבה!

           <form  action="~/Home/Create" method="get" id="myform">
                      @Html.AntiForgeryToken()
          
                      @Html.LabelFor(model=>model.SumDonation, new { @class = "col-sm-6"})
                      @Html.EditorFor(model => model.SumDonation, new { @class="col-sm-6"})
                      <input type="submit" value="שלח" class="btn btn-primary" />
                  </form>
          

          אני מנסה לשלוח אותו בAJAX ע"י הקוד הזה:

          $("#myform").ajaxForm();
          

          וכמו שכתבתי אני מקבל שגיאה מספר 500 בזו הלשון:
          The required anti-forgery form field "__RequestVerificationToken" is not present.

          אולם, כשאני מדבאג את הדף השדה הזה כן נוכח בדף..

          <input name="__RequestVerificationToken" type="hidden" value="KWKFiT8WnEdf-4svBItF1IjRiO8jLtEau53m41IGBrN5WyTq0ynUGbbhCvwW7GLeQ_R-8XNo3LZT88JrPvU-AcA1PV7B7bOJHkUOp9g_yQw1">
          

          פורסם במקור בפורום CODE613 ב05/01/2016 15:16 (+02:00)

          תגובה 1 תגובה אחרונה
          0
          • A מנותק
            A מנותק
            avr416
            כתב ב נערך לאחרונה על ידי
            #5

            ראיתי עכשיו שהייתה לי טעות בדוגמא הזאת, כיון שבקוד הHTML כתבתי action="get" אולם בקונטרולר המתודה מוגדרת כPOST. ואכן כששיניתי לaction=post זה עבד, ולא הייתה שום בעיה.
            אולם כשאני משתמש בזה במקומות אחרים, ולא משתמש בajaxForm אלא שולח את הנתונים ע"י בקשת AJAX רגילה - אני אכן מקבל את השגיאה הזאת שוב..

            פורסם במקור בפורום CODE613 ב05/01/2016 15:52 (+02:00)

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

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

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

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