با استفاده از Node.js و Express یک سرور ساده بسازید که CORS را برای دامنههای مشخص شده، متدهای GET و POST، و ارسال کوکیها (credentials) مدیریت کند.
11.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:15 0.0
برای حل این مسئله از JavaScript و فریمورک Express استفاده کنید و بستهی cors یا هِدرهای HTTP را بهصورت دستی پیکربندی نمایید؛ یک whitelist از origins تعریف کنید و در middleware بررسی کنید که اگر origin در لیست بود مقدار Access-Control-Allow-Origin را برابر آن قرار دهید و Access-Control-Allow-Credentials را true تنظیم کنید. حتماً پاسخ به preflight (OPTIONS) را با Access-Control-Allow-Methods شامل GET و POST و Access-Control-Allow-Headers مناسب برگردانید؛ نکته مهم اینکه وقتی credentials=true است نباید از wildcard (*) برای Allow-Origin استفاده کنید و برای تست از دو پورت مختلف در مرورگر (مثلاً client روی localhost:3000 و server روی localhost:4000) و fetch با گزینه credentials:'include' استفاده نمایید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای مدیریت CORS با صرف نظر از wildcard زمانی که credentials=true استفاده میکنید، از یک whitelist از origins مجاز استفاده کنید و در middleware مقدار Access-Control-Allow-Origin را با توجه به Origin درخواستشده تنظیم کنید. همچنین باید پاسخ preflight (OPTIONS) را با Access-Control-Allow-Methods شامل GET و POST و Access-Control-Allow-Headers مناسب (مثل Content-Type و Authorization) و Access-Control-Allow-Credentials: true برگردانید. برای تست با دو پورت مختلف، از fetch با credentials: 'include' استفاده کنید و مطمئن شوید که سرور تنها به Originهای معتبر پاسخ میدهد و به جای '*' از origin بازگردانده میشود. اگر میخواهید چندین دامنه را پشتیبانی کنید، یک تابع ساده بنویسید که origin را بررسی کند و در صورت وجود در whitelist همان origin را در Access-Control-Allow-Origin برگرداند.
گزارش