كيف اضيف header لمجلد في nginx

السلام عليكم

من فضلكم لدي سؤال، انا مبتدئ في استخدام nginx، لدي مجل فيه ملف data.json عندما اقوم باستدعائه بالكود التالي:

$.getJSON('../data.json', function(data) {
   
console.log(data);
});

يظهر لي خطأ

Access to XMLHttpRequest at 'data.json' from origin 'https://www.mydomain.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

كيف اضيف ال header يدويا ، هل يقبل htaccess

شكرا على المساعدة

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

وعليكم السلام،

أدخل إلى هذا المجلد:

/etc/nginx/sites-enabled/

هناك ستجد ملف يحمل اسم دومين موقعك (إن لم يكن موجودا فعدل على ملف 'default')، هذا الملف هو الملف المقابل لملف .htaccess في Apache.

أضف هذه الشيفرة لتضيف أي Header أو تحديد مدة الـCache:

location ~*.(json)$ {
    expires 30d;
    add_header Access-Control-Allow-Origin '*';
}

هذا الكود سيضيف Access-Control-Allow-Origin إلى كل ملفات json، يمكنك تعديل الكود ليعمل على ملف واحد أو عدة ملفات بصيغ مختلفة.

Mohamed__99 أضف ردا

اضفته ولم يتم حل الإشكال

وجدت الملف عبارة عن اختصار https://prnt.sc/nT8mIHBNuO2g

هل يمكنك أن تنسخ محتوى ذلك الملف إلى هنا؟

نسيت أن أقول أنه لكي تشتغل الإعدادت الجديدة لابد من إعادة تشغيل nginx من خلال هذا الأمر:

sudo systemctl restart nginx

نعم قمت بذلك واصلحت المشكلة

هل هذها الصيغة صحيحة

location ~ ^/folder/${
add_header Access-Control-Allow-Origin '*';
if ($http_referer  !~* (doamin.com) ) {
  return 403;
  }

لاضافة الهيدر لفولدر معين

وبالنسبة ل

expires 30d;

هل هي ضرورية لان الملف json الخاص بي يتغير كل 15 دقيقة

اجعلها هكذا:

location /folder/ {
  add_header Access-Control-Allow-Origin 'domain.com';
}

طبعا يجب أن تغير 'domain.com' إلى دومين الموقع الذي تريده أن يصل إلى ملفات المجلد 'folder'.

وتأكد من كتابة الكود داخل كتلة server:

server {

مكان الكود

}

أما 'expires 30d;' فهي غير ضرورية.

شكرا على المساعدة ، اضفت الكود لكن عند استدعاء الرابط

يظهر لي هذا الخطأ

Access to XMLHttpRequest at 'https://s1.domain.com/ift_apis/info/get.php?part=index1' from origin 'https://www.movie.online' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
walid99 أضف ردا
https://s1.domain.com/ift_apis/info/get.php?part=index
https://www.movie.online

1 - أتفهّم أنك لا تريد الكشف عن الدومينات، لكن هل تمتلك كلا الموقعين؟ على أي منهما كنت تعدل اعدادات nginx؟

2 - هل غيرت كلمة 'folder' في الكود إلى اسم المجلد الحقيقي الذي تحاول الوصول إلى ملفاته؟

السكريبت موجود على https://s1.domain.com

وانا اريد استدعائه في https://www.movie.online

جرب إضافة ذلك ال header داخل كود السكريبت في بداية ملف php هكذا:

header("Access-Control-Allow-Origin: https://www.movie.online/");