के साथ सीओआरएस त्रुटियां मेरे पास फ्लास्क, फ्लास्क-स्क्लाक्लेमी और फ्लास्क-रेस्टलेस का उपयोग करके एक एपीआई चल रहा है, और जावास्क्रिप्ट (backbone.js, सटीक होने के लिए) से POST/PUT/DELETE अनुरोध करने का प्रयास कर रहा हूं। हालांकि, मैं सीओआरएस त्रुटियों में चल रहा हूं - जीईटी को छोड़कर सब कुछ एक HTTP विकल्प 501 ब्राउज़र में कार्यान्वित त्रुटि नहीं देता है।फ्लास्क और गीवेंट
प्रारंभ में, मैं जोड़ने से सभी प्रतिक्रियाओं के लिए कम से कम प्रतिबंधक CORS संभव हेडर की कोशिश की:
@app.after_request
def after(response):
response.headers.add('Access-Control-Allow-Origin', '*')
response.headers.add('Access-Control-Allow-Methods',
'POST, GET, PUT, PATCH, DELETE, OPTIONS')
response.headers.add('Access-Control-Allow-Headers',
'Content-Type, X-Requested-With')
response.headers.add('Access-Control-Max-Age', '1728000')
return response
CORS विफल जब अनुरोध के Content-Type हैडर आवेदन/json के लिए स्थापित किया गया था (के रूप में एपीआई के लिए आवश्यक) लग रहा था
@app.before_request
def before():
request.environ['CONTENT_TYPE'] = 'application/json'
हालांकि, पोस्ट के अलावा सब कुछ अभी भी विफल: है, तो एक त्वरित हैक चीजें काम कर पाने के लिए बनाया गया था। इसके अलावा, gevent की लॉगिंग चालू है, लेकिन कोई विकल्प अनुरोध कभी लॉग इन कर रहे हैं (जो मेरा मानना है कि CORS preflight सामान है), तब भी जब ब्राउज़र उन्हें एक 501.
साथ नाकाम रहने से पता चलता मैं gevent में कुछ बदलने की जरूरत है या क्या सीओआरएस काम करने के लिए फ्लास्क?
संपादित करें: का उपयोग कर निर्मित बोतल सर्वर काम करता है, इसलिए gevent समस्या यहाँ है, लेकिन मैं डॉक्स के रास्ते में बहुत खोजने के लिए प्रतीत नहीं कर सकते हैं ...