• توجه: در صورتی که از کاربران قدیمی ایران انجمن هستید و امکان ورود به سایت را ندارید، میتوانید با آیدی altin_admin@ در تلگرام تماس حاصل نمایید.

مشکل اجرا نشدن فایلها در خارج سایت و ارور cross site

Mahdi Askari

مدير فنی
خب اکثر مواقع دیده میشه قالبی رو که از اول طراحی میکنیم و همه چیزش اوکی هست
اما وقتی قالب رو از روی سایت منتقل به وبلاگ میکنیم میبینیم مواردی اجرا نمیشوند و بسیار زیاد تر این مورد برای اجرا نشدن فونت های پیوست شده به صفحه بوجود میاد
همه مروگر ها همه چیز رو درست نشون به جز یکی
که اون هم احتمال زیاد مرورگر موزیلا و یا کروم هست
خب این مورد به سادگی قابل حل هست و مشکل این هست که این پسوند در هاست ما برای دانلود شدن در هنگام بارگذاری قالب تعریف نشده
به هاست خودتون برید فایل htaccess رو باز کنید ( هنگام ورود به فایل منیجر در سی پنل تیک show hidden رو بزنید )
سپس دنبال این فایل گشته و اونو باز کنید
در آخر این فایل موارد زیر را اضافه کنید:

کد:
<FilesMatch "\.(ttf|otf|eot|woff)$">  
 <IfModule mod_headers.c>   
  Header set Access-Control-Allow-Origin "*"  
 </IfModule> 
</FilesMatch>

در این کد ما پسوند های فونت رو برای اجرا در خارج از سایت مبدا تعیین میکنیم

از این مدل کد برای اجرا شدن در خارج از سایت مبدا در این فایل htaccess زیاد میبینید که در هر کدام تعدادی پسوند رو برای شناساندن به مرورگر تعیین کردن

موفق باشید:گل:

 

t92

متخصص بخش
در واقع مسئله به این صورت هست که
مرورگر فایرفاکس ( و شاید بعضی از مرورگرهای دیگه‌ ) اجازه لود شدن محتوای بین سایتی (cross site) رو در مواردی مانند لود شدن فونت ها از ریموت و مواردی از این قبیل نمیده.
این مشکل معمولا مواقعی پیش میاد که سرور میزبانی که فایل ها روی اون قرار دارند دسترسی cross site به درستی تنظیم نشده باشه.

اطلاعات بیشتر در مورد Cross Site Http Request

برای حل این مسئله در صورتی که سرور میزبان به صورت پیشفرض قابلیت مذکور رو نداره میتونید از کدی که قرار دادید استفاده کنید.
توضیح اضافه در مورد کد بالا این که اگر بخواید سرور ریموتی که به فایل های شما دسترسی پیدا میکنه محدود به آدرسی باشه که شما تعیین میکنید باید کد به صورت زیر استفاده کنید:

کد:
<FilesMatch "\.(ttf|otf|eot|woff)$">
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "http://site1domain,http://site2domain,"
</IfModule>
</FilesMatch>
 
بالا