پرش به مطلب اصلی

قوانین تبدیل

قوانین تبدیل به شما این امکان را می‌دهد تا کنترل دقیقی روی Headerهای ارسالی در درخواست‌ها (Requests) و پاسخ‌های (Responses) HTTP داشته باشید. با استفاده از این ویژگی که عملکردی مشابه Response Transformer ها دارد، می‌توانید هدرها را بر اساس نیاز سرویس خود بازنویسی، اضافه یا اصلاح کنید.

برای نمونه، می‌توانید مقدار هدر Access-Control-Allow-Origin را بر اساس Origin درخواست ورودی به‌شکل پویا تعیین کنید، بدون آن‌که تغییری در سرور اصلی لازم باشد.

کارکرد قوانین تبدیل

قوانین تبدیل بر پایه منطق شرطی «اگر - آن‌گاه» (If-Then) کار می‌کنند. شما می‌توانید شروطی را تعریف کنید تا تنها هنگام تطبیق درخواست با آن شروط، تغییرات مورد نظر روی هدرها اعمال شود.

  • اگر (If): درخواست‌های ورودی مطابق با شروط تعیین‌شده (مانند مسیر خاص، نوع متد HTTP و...) باشند.
  • آن‌گاه (Then): تغییرات درخواستی روی هدرهای مشخص‌شده اعمال می‌شود.

در حال حاضر می‌توانید هدرهای زیر را از طریق قوانین تبدیل تنظیم کنید:

  • Access-Control-Allow-Origin
  • Access-Control-Expose-Headers
  • Access-Control-Max-Age
  • Access-Control-Allow-Credentials
  • Access-Control-Allow-Methods
  • Access-Control-Allow-Headers

برای هر یک از هدرهای بالا، مقدار جایگزین می‌تواند یکی از دو حالت زیر باشد:

  • برابر با Header درخواست ورودی (Dynamic): در این حالت، مقدار Header از درخواست کاربر استخراج می‌شود. این مقدار می‌تواند از هدر Host یا Origin درخواست‌دهنده خوانده شود.
  • مقدار دل‌خواه (Static): می‌توانید یک مقدار متنی ثابت و دل‌خواه را برای هدر تنظیم کنید (مثلن تنظیم یک دامنه خاص یا مقادیری مانند true برای Credentials).

تنظیم قوانین تبدیل

در پنل کاربری و بخش CDN، دامنه‌ی موردنظرتان را انتخاب کرده و از منوی «شبکه توزیع محتوا»، گزینه‌ی «قوانین تبدیل» را بزنید. سپس روی دکمه‌ی «قانون جدید» کلیک کنید.

در فرم باز‌شده، قانون تبدیل را تعریف کنید.

ابتدا یک نام و توضیحاتی دل‌خواه بنویسید.

در بخش شرط، پارامتر، اپراتور و مقدار را تنظیم کنید. پارامتر مشخص می‌کند کدام ویژگی درخواست بررسی شود؛ مانند URI Path یا متد HTTP، و اپراتور نوع مقایسه را تعیین می‌کند.

اگر نیاز باشد چند شرط هم‌زمان برقرار باشند، با دکمه‌ی AND شرط‌های بیش‌تری به همان ردیف اضافه کنید. اگر می‌خواهید قانون هنگام برقراری هر یک از چند حالت مستقل اجرا شود، با دکمه‌ی OR یک گروه شرط جدید بسازید. هم‌چنین می‌توانید شرط را به‌شکل مستقیم و در قالب عبارت متنی در بخش «عبارت» پایین فرم وارد کنید.

در بخش «آن‌گاه»، هدر موردنظر را از فهرست انتخاب کنید.

سپس نوع مقدار را تعیین کنید:

  • اگر مقدار باید از هدر درخواست ورودی خوانده شود، گزینه‌ی «Header درخواست ورودی» را انتخاب کرده و فیلد Origin یا Host را مشخص کنید؛

  • اگر مقدار ثابت است، پس از انتخاب گزینه‌ی «مقدار دل‌خواه» آن را مستقیم وارد کنید.

در پایان روی «افزودن قانون» کلیک کنید.

نمونه: دسترسی هم‌زمان چند زیردامنه به یک API

فرض کنید یک سرویس API مرکزی دارید و ۱۰ زیر‌دامنه‌ی مختلف نیاز دارند تا به‌طور مستقیم به این API درخواست (Fetch/XHR) ارسال کنند. استفاده از کاراکتر * در هدر Access-Control-Allow-Origin از نظر امنیتی به هیچ وجه توصیه نمی‌شود از طرفی، تنظیم استاتیک هر ۱۰ زیر‌دامنه روی سرور نیازمند مدیریت پیچیده‌ای است.

شما می‌توانید یک قانون تبدیل هوشمند ایجاد کنید تا CDN به‌شکل پویا هدر CORS را بر اساس درخواست کلاینت تنظیم کند.

فیلدمقدار
پارامترURI Path
اپراتورشروع می‌شود با
مقدار/api/
هدرAccess-Control-Allow-Origin
نوع مقدارHeader درخواست ورودی
مقدارOrigin

با این تنظیم، CDN مقدار هدر Access-Control-Allow-Origin را برابر با Origin هر درخواست ورودی قرار می‌دهد. مثلن اگر درخواستی از https://sub1.yourdomain.com ارسال شود، پاسخ همان مقدار را در هدر CORS برمی‌گرداند. این فرآیند برای همه‌ی زیر‌دامنه‌ها به‌شکل امن و پویا و بدون نیاز به تغییر در سرور اصلی انجام می‌شود.