اذهب إلى المحتوى

السؤال

نشر

لديك مشروع مبني بإستخدام فلاسك Flask ولكن عندما أحاول أن أقوم بعمل API وطلب أحد المسارات بإستخدام Ajax عبر jQuery يظهر لي هذا الخطأ:

XMLHttpRequest cannot load http://... No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin ... is therefore not allowed access.

أعلم أن سبب هذه المشكلة هو Cross-Origin Resource Sharing (CORS) ولكن لا أعرف كيف أصلح هذه المشكلة في فلاسك Flask، هل يجب أن أقوم بتثبيت مكتبة معينة؟

كيف أصلح هذه المشكلة؟

Recommended Posts

  • 1
نشر

يمكنك حل هذه المشكلة من خلال تثبيت الحزمة flask-cors والتي سوف تقوم بضبط إعدادات CORS في مشروعك، لتثبيت الحزمة أستخدم الأمر التالي:

pip install -U flask-cors

الآن يمكنك إستخدامها في الكود على النحو التالي:

from flask import Flask
from flask_cors import CORS, cross_origin
app = Flask(__name__)

# إعداد الحزمة
cors = CORS(app)
app.config['CORS_HEADERS'] = 'Content-Type'

@app.route("/")
@cross_origin()	# أضف هذا السطر لكل المسارات التي تريد الوصول إليها عبر Ajax
def index():
  return "Home Page"

يمكنك أيضًا أن تستخدم دالة لتقوم بتعديل قيمة الترويسة header التي تحمل الاسم Access-Control-Allow-Origin لتكون قيمتها * لكل المسارات من خلال الكود التالي:

@app.after_request
def after_request(response):
    header = response.headers
    header['Access-Control-Allow-Origin'] = '*'
    return response

بهذا الشكل سوف يتم إيقاف CORS لكن لا ينصح بهذا الأمر لأن الموقع قد يتعرض لهجمات تزوير الطلبات من قِبل بعض المخترقين Hackers.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...