CORS Tester: ابزار رایگان تست CORS آنلاین
خلاصهٔ کاملتر
CORS (Cross-Origin Resource Sharing) یه مکانیزم مرورگریه که کنترل میکنه کدوم سایتها میتونن به منابع سایت دیگهای دسترسی داشته باشن. مرورگرها بهصورت پیشفرض درخواستهای بین originهای مختلف رو بلاک میکنن، مگه اینکه سرور با هدرهای مناسب اجازه صریح بده. مثلاً اگه فرانتاند روی باشه و بخواد از داده بگیره، مرورگر جلوش رو میگیره — مگه سرور CORS رو فعال کرده باشه.
ابزار CORS Tester از Corsfix دقیقاً این رفتار مرورگر رو شبیهسازی میکنه. یعنی اگه یه درخواست اینجا خطا بده، توی Chrome، Firefox و Safari هم همین اتفاق میافته. این فرق اصلیشه با Postman — Postman یه HTTP client سمت بکانده و Same-Origin Policy رو اعمال نمیکنه، پس خطاهای CORS رو نشون نمیده.
برای تست، فقط کافیه URL هدف رو وارد کنی، origin رو روی دامنه فرانتاندت تنظیم کنی (مثلاً متد HTTP مناسب رو انتخاب کنی، و اگه لازمه هدرهای سفارشی اضافه کنی. ابزار تمام هدرهای استاندارد CORS رو بررسی میکنه: از Access-Control-Allow-Origin و Access-Control-Allow-Methods گرفته تا Access-Control-Allow-Credentials و Access-Control-Max-Age.
یه نکته مهم درباره preflight request: وقتی از متدهایی مثل PUT یا DELETE استفاده میکنی، یا هدر سفارشی مثل Authorization اضافه میکنی، مرورگر قبل از درخواست اصلی یه OPTIONS request میفرسته و از سرور میپرسه «آیا این نوع درخواست رو قبول میکنی؟». اگه سرور درست جواب نده، درخواست اصلی اصلاً ارسال نمیشه.
رایجترین خطای CORS پیام No 'Access-Control-Allow-Origin' header is present هست که یعنی سرور این هدر رو برنگردونده. راهحل اضافه کردن این هدر به کانفیگ سرورته. مثلاً در Express:
const cors = require('cors');
app.use(cors({ origin: 'https://example.com', credentials: true }));یا در Nginx:
location /api/ {
add_header Access-Control-Allow-Origin "https://example.com" always;
add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS" always;
add_header Access-Control-Allow-Headers "Content-Type, Authorization" always;
if ($request_method = OPTIONS) { return 204; }
}اگه به سرور دسترسی نداری و نمیتونی هدرها رو تغییر بدی، سریعترین راهحل استفاده از یه CORS proxy مثل خود Corsfixه که هدرهای لازم رو بهصورت خودکار به response اضافه میکنه.
نکات کلیدی:
- CORS فقط توی مرورگر اعمال میشه؛ Postman و cURL هرگز خطای CORS نشون نمیدن
- CORS Tester رفتار واقعی مرورگر رو شبیهسازی میکنه، نه یه HTTP client ساده
- برای تست preflight، از متد PUT/DELETE یا هدر Authorization استفاده کن
- وقتی credentials فرستاده میشه، سرور باید origin دقیق رو بده، نه *
- میشه localhost رو هم تست کرد (مثلاً
- اگه دسترسی به سرور نداری، CORS proxy سریعترین راهحله




