چطور با سایت های دیگر ارتباط آجاکس برقرار کنیم
در صورتیکه قصد دارید بیشتر با این متد آشنا شوید در گوگل عبارت cross-domain-ajax را جستجو فرمایید
اونهایی که با آجاکس کار کرده اند (اجاکس به طور خلاصه یعنی تغیر محتوای قسمتی از صفحه بدون رفرش کامل) خیلی زود فهمیده اند که به دلایل امنیتی و محدودیت های جاوا اسکریپت نمی توان با آجاکس از یک سرور داده های سرور دیگری را دریافت کرد اما با ترفندی به نوعی می توان این محدودیت را برداشت به طور خلاصه اینکه این کار را ما با یک curl در سرور انجام می دهیم یعنی با کد آجاکسی به سرور خودمان اعلام می کنیم که از یک سرور دیگر داده های مورد نیاز من را بگیر و به من بده (با این روش حتی می توان هدر مخصوص آجاکس و رفرر سایت مورد نظر را برای گوگل زدن آن به ریکویست ارسالی اضافه کنیم اینطور سایت ثانی اگر هم بخواهد نمی تواند برای کاربران عادی (و نه عضو) جعلی بودن درخواست را تشخیص دهد)کد مشابه زیر را هم برای آن داریم
request= "http" (/^https/.test(protocol)?"s":"") "://domain.com/? query =select * from html where url="{URL}" and xpath="*"";
یکی از پلاگینهای جیکوئری که برای این کار نوشته شده را می توانید در اینجا ببینید http://james.padolsey.com/java/cross-domain-requests-with-jquery
و این یکی از روش هایی است که برخی سایتها برای به دست آوردن اطلاعات از سرور های تراوین استفاده می کنند مثلا سایت هایی هستند تعداد کاربران آنلاین هرکدام از سرور های تراوین را بصورت آجاکسی و اینتراکتیو به شما اعلام می کنند این موضوع تا مدتها برای خود من سوال بود که چطور برخی سایتها توانسته اند بصورت اجاکسی اطلاعات را از سرور های تراوین بگیرند
توضیح: توجه داشته باشید که کاربرد اصلی cross در زمانی هست که سرور دوم در اختیار شما نیست . شما اگر از jsonp در jquery در ارسال آژاکس استفاده کنید میتونید از دو سرور مختلف به هم دسترسی داشته باشید به شرطی که dataType برابر با jsonp باشه . البته این زمانی استفاده داره که خروجی شما در سرور دوم json باشه !!!!
البته بدون jsonp هم می توان بین دو سرور از طریق آجاکس رابطه برقرار کرد
کافیست کد زیر را در صفحه ای که می خواهیم از طریق آجاکس به آن دسترسی داشته باشیم قرار بدهیم
کافیست کد زیر را در صفحه ای که می خواهیم از طریق آجاکس به آن دسترسی داشته باشیم قرار بدهیم
header("Access-Control-Allow-Origin: *");
اگر هم دامنه خاصی را در نظر داریم به جای ستاره آن را بگذاریم مثلاheader("Access-Control-Allow-Origin: http://mysite.com");
البته می توان با htaccess این کار را در کل سایت هم اعمال کرد