آموزش پیکربندی CORS در ASP.NET Core
آموزش پیکربندی CORS در ASP.NET Core یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته آموزشی پیکربندی CORS در اپلیکیشن های ASP.NET و ASP.NET Core است که با نام اصلی Configuring CORS in ASP.NET and ASP.NET Core از شرکت Pluralsight منتشر شده است.
فعال کردن CORS در ASP.NET Core
همه مرورگرهای مدرن، هدر origin را به صورت خودکار تنظیم می کنند که نشان می دهد دامنه سایت در حال request دادن است. اگر سرور اجازه بدهد که request های Cross-origin ازorigin مورد نظر به عنوان مثال: https://example.com وارد بشوند، مقدار هدر Control-Allow-Origin با مقدار هدر مربوط به origin که از درون request بیرون آمده است تنظیم خواهد شد. به روشی دیگر، اگر سرور این هدر را شامل نشود، درخواست با شکست مواجه می شود و مرورگر باید داده های response را دریافت کند، اما این داده ها نباید برای کاربر قابل دسترسی باشد. این روشی است که یک request ساده CORS با آن کار می کند.
Preflight Request چیست؟
گاهی اوقات، به جای یک request ساده GET، یک کاربر ممکن است نیاز به ارسال request هایی مانند PUT و DELETE و.. داشته باشد. برای چنین request هایی، مرورگر یک request اضافی (یک request از نوع OPTIONS) به نام Preflight request ارسال می کند.

این request درست قبل از request واقعی انجام می شود تا مطمئن شوید که request اصلی موفق بوده است. و اگر مطمین شود که اینگونه بوده است، مرورگر request واقعی را ارسال می کند.
فعال کردن CORS در ASP.NET Core با Attribute ها
اگر بخواهیم به request های CORS فقط به چند روش انتخاب شده اجازه دهیم، به جای فعال کردن CORS در کل سطح اپلیکیشن، میتوانیم CORS را در سطح controller یا در سطح action فعال کنیم. برای اینکه بتوانیم این کار را انجام دهیم، باید از [EnableCors] استفاده کنیم:
- ما میتوانیم فقط از [EnableCors] در controller ها و یا action ها استفاده کنیم و به اینگونه یک CORS policy پیشفرض پیاده سازی خواهد شد.
- یا میتوانیم از [EnableCors("Policy name")] برای اعمال کردن یک نام برای CORS policy استفاده کنیم.
- با استفاده از policy نامگذاری شده با [EnableCors] میتوانیم policy های مختلفی را برای controller ها یا action های مختلف اعمال کنیم.
تعریف سیاستهای CORS برای Originها و Endpointهای مختلف
در برنامههایی که رابط کاربری و API روی Originهای متفاوت اجرا میشوند، لازم است مشخص شود کدام درخواستهای Cross-origin مجاز هستند. این آموزش نحوه پیکربندی CORS در ASP.NET Core را بررسی میکند و به محدود کردن درخواستها به Originهای مشخص میپردازد. بهجای استفاده از یک سیاست یکسان برای تمام درخواستها، میتوانید سیاستهای چندگانه تعریف کنید و دسترسی را بر اساس نیاز هر بخش تنظیم کنید. این روش زمانی کاربرد دارد که محیط توسعه، وبسایت اصلی یا چند کلاینت مختلف به یک API متصل میشوند و هرکدام به سطح دسترسی متفاوتی نیاز دارند.
همه Endpointهای یک برنامه الزاماً نباید سیاست CORS یکسانی داشته باشند. در این آموزش، پیکربندی متفاوت برای Endpointهای مختلف و همچنین تنظیم Wildcard Subdomainها بررسی میشود. موضوع `Runtime Validation` نیز مطرح است تا با ملاحظات اعتبارسنجی Originها هنگام اجرا آشنا شوید. این مفاهیم به شما کمک میکنند سیاستهای دسترسی را متناسب با ساختار واقعی API طراحی کنید و از مجاز کردن ناخواسته دامنههای نامرتبط پرهیز داشته باشید. در عمل، انتخاب دقیق Originها و سیاستهای اختصاصی میتواند مدیریت دسترسی مرورگر به منابع سرور را روشنتر و قابلکنترلتر کند.
مدیریت Credentialها و Headerهای سفارشی در CORS
برخی درخواستهای Cross-origin علاوه بر دسترسی به API، به ارسال اطلاعات اعتبارنامه یا خواندن Headerهای خاص نیاز دارند. این آموزش نحوه پیکربندی اجازه ارسال `Credential`ها در درخواستهای CORS و انتشار Headerهای سفارشی را بررسی میکند. این تنظیمات باید با دقت انجام شوند، زیرا مجاز بودن یک Origin بهتنهایی به این معنا نیست که مرورگر تمام اطلاعات یا Headerهای موردنیاز را در اختیار کلاینت قرار میدهد. شناخت تفاوت میان اجازه ارسال اطلاعات و اجازه خواندن Headerها، هنگام اتصال یک رابط کاربری به APIهایی با نیازهای احراز هویت مشخص اهمیت دارد.
آموزش علاوه بر ASP.NET Core، پیکربندی CORS در برنامههای ASP.NET سنتی را نیز پوشش میدهد؛ از جمله برنامههایی که از `OWIN` استفاده میکنند. این مقایسه برای توسعهدهندگانی مفید است که با پروژههای مبتنی بر نسخههای مختلف فناوریهای وب داتنت سروکار دارند و باید تنظیمات موجود را نگهداری یا اصلاح کنند. همچنین، اشکالزدایی مشکلات CORS بخشی از مباحث آموزش است. آشنایی با تنظیمات و خطاهای متداول کمک میکند هنگام رد شدن درخواست توسط مرورگر، بتوانید سیاست Origin، Credentialها و Headerهای مجاز را بررسی کنید، بهجای آنکه مشکل را صرفاً به کد سمت کلاینت نسبت دهید.
سرفصل مطالب آموزش ویدیویی پیکربندی CORS در ASP.NET Core
فصل اول: مقدمه این دوره آموزشی- مقدمه
- مقدمه
- مفهوم Cross-origin Resource Sharing و یا CORS چیست و چرا اهمیت دارد؟
- پیکربندی CORS در برنامه های ASP.NET Core
- محدود کردن Request های CORS به Origin های خاص
- تعریف سیاست های چندگانه CORS
- اجازه دادن به انتشار Credential ها برای Request های CORS
- اشکال زدایی مشکلات CORS
- انتشار هدرهای سفارشی در CORS
- پیکربندی کردن Wildcard Subdomain ها و Runtime Validation
- جمع بندی
- مقدمه
- پیکربندی CORS در برنامه های ASP.NET
- محدود کردن Request های CORS به Origin های خاص
- پیکربندی CORS بصورت متفاوت برای Endpoint های متفاوت
- پیکربندی CORS در یک برنامه ASP.NET که از OWIN استفاده می کند
- جمع بندی

