כיצד להפעיל את CORS ב- API האינטרנט שלך

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

כאן נחלץ להציל את CORS (שיתוף משאבים מקוריים). CORS הוא תקן W3C המאפשר לך להתרחק מאותה מדיניות מקור שאומצה על ידי הדפדפנים כדי להגביל את הגישה מתחום אחד למשאבים השייכים לדומיין אחר. באפשרותך להפעיל CORS עבור ה- API של האינטרנט שלך באמצעות חבילת ה- API של האינטרנט המתאימה (תלוי בגרסת ה- API של האינטרנט הנמצא בשימוש) או בתוכנת הביניים של OWIN.

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

אפשר תמיכה ב- CORS ב- ASP.NET Web API

ASP.NET Web API מספק תמיכה מצוינת ב- CORS. כדי לספק תמיכה ל- CORS ב- ASP.NET Web API 2, עליך להשתמש בחבילה NuGet של Microsoft.AspNet.WebApi.Cors. כדי להתקין חבילה זו, תוכל לבצע את הפקודה הבאה ממסוף מנהל החבילות של NuGet.

התקנת חבילה Microsoft.AspNet.WebApi.Cors

לחלופין, תוכלו לבחור את הפרויקט שלכם בחלון סייר הפתרונות ולהתקין את החבילה באמצעות מנהל החבילות של NuGet.

אם אתה משתמש ב- Web API 1.0, באפשרותך להפעיל תמיכה ב- CORS כולל ההצהרות הבאות במטפל האירועים Application_BeginRequest של הקובץ Global.asax.cs.

HttpContext.Current.Response.AddHeader ("בקרת גישה-אפשר-מקור", מותר מקור); 

HttpContext.Current.Response.AddHeader ("שיטות גישה לבקרה-אפשר", "GET, POST");

שים לב ש- "אפשרOrigin" כאן הוא משתנה מחרוזת המכיל את מקור הבקשה שרוצה לגשת למשאב. 

ניתן לאפשר תמיכה ב- CORS בשלוש רמות. אלה כוללים את הדברים הבאים:

  • רמת פעולה
  • רמת בקר
  • רמה גלובלית

אפשר CORS ברמה הגלובלית

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

רישום ריק סטטי ציבורי (תצורת HttpConfiguration)

        {

            מקור המחרוזת = "// localhost: 50164 / WebClient /";

            EnableCorsAttribute cors = חדש EnableCorsAttribute (מקור, "*", "GET, POST");

            config.EnableCors (cors);

            // ציין כאן את תצורת ה- API של Web API

            // ציין כאן את מסלולי ה- API של האינטרנט          

        }

    }

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

אפשר CORS ברמת הבקר

ניתן גם לאפשר תמיכה ב- CORS ברמת הבקר. לשם כך, ציין את התכונה [EnableCors] לבקר ה- API של האינטרנט שלך כמוצג להלן.

  [EnableCors (מקורות: "// localhost: 50164 /", כותרות: "*", שיטות: "*")]

    מחלקה ציבורית AuthorsController: ApiController

    {  

        // כתוב כאן את שיטות הבקר שלך ב- API API

    }

אפשר CORS ברמת הפעולה

באופן דומה, ניתן גם להפעיל CORS ברמת הפעולה באמצעות התכונה [EnableCORS]. הנה דוגמה שממחישה כיצד זה נעשה.

מחלקה ציבורית AuthorsController: ApiController

    {

        [EnableCors (מקורות: "// localhost: 50164 /", כותרות: "*", שיטות: "*")]

        מספר IE מספר Get ()

        {

            להחזיר מחרוזת חדשה [] {"Joydip Kanjilal", "Steve Smith"};

        }

    }

השבת את CORS לפעולה ספציפית

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

[DisableCors ()]

מספר IE מספר Get ()

   {

      להחזיר מחרוזת חדשה [] {"Joydip Kanjilal", "Steve Smith"};

   }

אם אתה משתמש ב- ASP.NET Core, עליך להוסיף את חבילת Microsoft.AspNetCore.Cors דרך NuGet לפרויקט שלך ואז לכתוב את ההצהרה הבאה בקובץ Startup.cs כדי להגדיר תמיכה ב- CORS.

חלל ציבורי ConfigureServices (שירותי ISCollection)

{

    services.AddCors ();

}

ניתן להפעיל את CORS באמצעות תוכנת התיווך CORS - תוכלו לנצל את שיטת ההרחבה UseCors בנושא זה. לחלופין, אתה יכול להפעיל את CORS בבקר או ברמות הפעולה באמצעות תכונת EnableCors באופן דומה לזה שעשינו קודם במאמר זה. באופן דומה, לצורך השבתת CORS, תוכלו להשתמש במאפיין [DisableCors].