درخواست های Cross-Domain

موقع انتخاب یا پیاده سازی یک REST API، یک قانون مهم هست که تعیین میکنه این API قابل استفاده در سایت شما هست یا نه و شما باید اون رو بدونید. مرورگر ها یه قابلیت امنیتی به اسم Same Origin Policy دارن. این سیاست (Policy) فقط به اسکریپت های در حال اجرا روی یک وبسایت اجازه میده تا به دیتا هایی از URL های مربوط به همون سایت بدون محودیت خاصی دسترسی پیدا کنن، اما از دسترسی اسکریپت ها به دیتا هایی که روی یک domain دیگه قرار دارن جلوگیری میکنه. دلیل این کار جلوگیری از انواع مختلف حمله هایی که افراد مختلف میتونن بی رحمانه با سواستفاده از ضعف های امنیتی مرورگر ها برای دزدیدن دیتای شما و یا ایجاد سرویس کال های مشکوک هست.

برای مثال اگه صفحه شما روی https://www.mygreatsite.com/foo.html هاست شده باشه، میتونید با رفتن به یک URL مثل https://www.mygreatsite.com/my_data.json به یک سری دیتا دسترسی پیدا کنید و یا سرویسی رو کال کنید. اما اگه دامین فرق داشته باشه، حتی اگه یه subdomain جدا مثل https://www.foobar.mygreatsite.com/my_data.json باشه، مرورگر یه ارور شبیه زیر میده:

XMLHttpRequest cannot load https://www.foobar.mygreatsite.com/my_data.json. Origin null is not allowed by Access-Control-Allow-Origin.

خوشبختانه یک سری راه برای دور زدن این محدودیت هست که میشه توی API ها پیاده سازی کرد. جزئیات این پیاده سازی بیشتر مربوط به سمت سرور میشه و ربط زیادی به این فصل نداره، اما فعلا در همین که بدونید میشه API ها رو طوری طراحی کرد که توی سایت های مختلف به دیتاهای مختلف دسترسی داشته باشن کفایت میکنه. پس موقع انتخاب API برای استفاده در پروژه‌تون، باید ببینید آیا با ویژگی cross-domain سازگاری داره یا نه (API مثال قبل، TheSportsDB، یکی از این سایت هاست).