بعد إجراء التغييرات اللازمة، لا تنس النقر فوق الزر حفظ التغييرات في أسفل الصفحة.
ملاحظات هامة
يمكن أن يؤدي التنفيذ غير السليم لـ CORS (مشاركة الموارد عبر الأصول) إلى مخاطر أمنية محتملة. إليك بعض الأشياء التي يجب وضعها في الاعتبار عند تمكين CORS على موقعك:
تحديد المجالات الدقيقة: يمكن أن يسمح استخدام أحرف البدل (*) في تكوين CORS لأي مجال بالتفاعل مع خادمك، وهو خطر أمني كبير. يوصى بتحديد المجالات الدقيقة.
تقليل البيانات المكشوفة: يجب إعداد CORS للكشف فقط عن البيانات الضرورية من المجالات الخارجية التي تثق بها. لا يُنصح بالسماح للمواقع التي لا تتحكم فيها بالوصول عبر CORS.
استخدام HTTPS: عند الإمكان، تجنب السماح للمواقع غير HTTPS في تكوين CORS الخاص بك، حيث يمكن أن يكشف ذلك البيانات بتنسيق غير مشفر.
لقد أضفت DISCOURSE_ENABLE_CORS: "true" إلى قسم env في ملف app.yml الخاص بموقعي.
ثم قمت بإعادة بناء التطبيق.
ثم ذهبت إلى قسم cors_origins وأضفت عنوان URL الكامل لموقع أحاول التفاعل معه، ومع ذلك لم ينجح الأمر.
لقد أنشأت صفحة لتقديم المعلومات عندما يكون الموقع الرئيسي معطلاً.
لقد وضعت هذا الكود في الصفحة للتحقق من الموقع الرئيسي وإعادة التوجيه إليه بمجرد عودته للعمل، ولكن يبدو أنه لا يعمل.
هذا هو الكود:
<script>
function checkSiteStatus() {
fetch('https://discourse.technospider.com', {
method: 'HEAD',
mode: 'cors', // Use CORS to get status code
cache: 'no-store' // Avoid caching
})
.then(response => {
console.log('Site check: Status', response.status);
if (response.ok) { // 200-299 status codes
console.log('Site is up, redirecting to Discourse');
window.location.replace('https://discourse.technospider.com');
} else {
console.log('Site is still down (status: ' + response.status + '), retrying in 20 seconds');
setTimeout(checkSiteStatus, 20000);
}
})
.catch(error => {
console.log('Site check: Error (likely down or CORS issue):', error.message);
setTimeout(checkSiteStatus, 20000);
});
}
// Start checking immediately
checkSiteStatus();
</script>
وهذا هو خطأ وحدة التحكم:
[Error] Origin https://www.technospider.com is not allowed by Access-Control-Allow-Origin. Status code: 200
[Error] Fetch API cannot load https://discourse.technospider.com/ due to access control checks.
[Error] Failed to load resource: Origin https://www.technospider.com is not allowed by Access-Control-Allow-Origin. Status code: 200 (discourse.technospider.com, line 0)
[Log] Site check: Error (likely down or CORS issue): – "Load failed" (berightback, line 78)
إذا كان لدى أي شخص أي رؤى، فسأكون سعيدًا بمعرفتها. أنا وجروك في حيرة من أمرنا.
[اقتباس=“NateDhaliwal، مشاركة: 4، موضوع: 270819”]
جرّبها بدون علامتي الاقتباس المزدوجتين، وإلا يمكن تفسيرها كسلسلة نصية بدلاً من قيمة منطقية.
[/اقتباس]
هنا يتم إدخالها في متغير بيئة (environment variable)، والذي لا يمكن أن يكون إلا سلسلة نصية. لا يهم.
ولكن بشكل عام هذا شيء جيد يجب تذكره حيث يمكنك الحصول على نتائج غير متوقعة لقيم تبدو غير ضارة: