एक django वेब ऐप को बाहरी यूआरएल पर AJAX कॉल करने की आवश्यकता है। विकास में मैं सीधे django से सेवा करता हूं इसलिए मेरे पास एक क्रॉस डोमेन समस्या है। AJAX कॉल के लिए प्रॉक्सी लिखने का django तरीका क्या है?django AJAX प्रॉक्सी दृश्य
उत्तर
क्या मैं सही हूं कि आप Django में दृश्य लिखने के बारे में पूछ रहे हैं जो आने वाले AJAX अनुरोध को स्वीकार कर सकता है, रिमोट सर्वर को अनुरोध जारी कर सकता है और फिर ब्राउज़र पर प्राप्त प्रतिक्रिया वापस कर सकता है?
यदि ऐसा है, तो यह वास्तव में Django विशिष्ट सवाल है - दूरस्थ कॉल डाल करने के लिए पायथन के urllib2 या httplib, और फिर आप बस के साथ किया जा सकता है:
return HttpResponse(received_response)
- अपने Django प्रॉक्सी-ध्यान में रखते हुए । मुझे यहां कोई प्रतिक्रिया प्रसंस्करण नहीं लगता है, क्योंकि अगर यह सिर्फ AJAX कॉल के लिए प्रॉक्सी है तो जावास्क्रिप्ट अनप्रचारित डेटा की अपेक्षा करता है।
मैं इसे अपने आप जवाब देने के लिए प्रयास करते हुए इस सवाल भर में भाग गया, और इस Django एप्लिकेशन पाया: ...
http://httpproxy.yvandermeer.net/
जो मैं क्या जरूरत के लिए एक छोटे से हैवीवेट (रिकॉर्डिंग और प्लेबैक है, आवश्यकता है एक मॉडल सामान में जोड़ने के लिए syncdb)। लेकिन आप अपने सामान्य प्रॉक्सी देखने के लिए, जो पर आधारित है में कोड का उपयोग करता है देख सकते हैं:
http://bitbucket.org/yvandermeer/django-http-proxy/src/1776d5732113/httpproxy/views.py
यहाँ Django के लिए एक मृत सरल प्रॉक्सी कार्यान्वयन है।
from django.http import HttpResponse
import mimetypes
import urllib2
def proxy_to(request, path, target_url):
url = '%s%s' % (target_url, path)
if request.META.has_key('QUERY_STRING'):
url += '?' + request.META['QUERY_STRING']
try:
proxied_request = urllib2.urlopen(url)
status_code = proxied_request.code
mimetype = proxied_request.headers.typeheader or mimetypes.guess_type(url)
content = proxied_request.read()
except urllib2.HTTPError as e:
return HttpResponse(e.msg, status=e.code, mimetype='text/plain')
else:
return HttpResponse(content, status=status_code, mimetype=mimetype)
यह प्रॉक्सी PROXY_PATH + पथ से TARGET_URL + पथ से अनुरोध करती है। प्रॉक्सी सक्षम है और इस तरह एक URL पैटर्न जोड़कर कॉन्फ़िगर किया गया है urls.py रहे हैं:
url(r'^PROXY_PATH/(?P<path>.*)$', proxy_to, {'target_url': 'TARGET_URL'}),
उदाहरण के लिए:
url(r'^images/(?P<path>.*)$', proxy_to, {'target_url': 'http://imageserver.com/'}),
http के लिए एक अनुरोध कर देगा: // स्थानीय होस्ट: 8000/छवियों/logo.png फ़ाइल को पर लाएं और वापस लौटें http://imageserver.com/logo.png।
क्वेरी स्ट्रिंग्स अग्रेषित किए जाते हैं, जबकि कुकीज़ और POST डेटा जैसे HTTP शीर्षलेख नहीं हैं (यदि आपको इसकी आवश्यकता है तो इसे जोड़ने में काफी आसान है)।
नोट: यह मुख्य रूप से विकास के उपयोग के लिए है। उत्पादन में प्रॉक्सीइंग को संभालने का सही तरीका HTTP सर्वर (उदा। अपाचे या एनजिनक्स) के साथ है।
संपूर्ण बिंदु कुकीज और पोस्ट डेटा पास करना है, इसलिए हमें कुकीज़ और पोस्ट डेटा जोड़ने में आसान कहने के बजाय, आप बस कोड लिख सकते थे? –
हां, शायद आप कुकीज़ और पोस्ट डेटा पास करने के लिए भागों में जोड़ सकते हैं? –
- 1. Django + AJAX
- 2. Django: प्रत्येक दृश्य (django)
- 3. एक django दृश्य
- 4. Django दृश्य
- 5. Django प्रॉक्सी मॉडल और ForeignKey
- 6. JQuery + AJAX + Django = CSRF?
- 7. Django Ajax लॉगिन फॉर्म
- 8. AJAX और DJANGO फॉर्म
- 9. django AJAX पोस्ट 403 वर्जित
- 10. Django क्लास आधारित दृश्य
- 11. django-ajax- उदाहरण का उपयोग
- 12. Django jquery AJAX 403 त्रुटि
- 13. Django - एक दृश्य से टैग शामिल करना
- 14. Django - एक दृश्य, एकाधिक यूआरएल?
- 15. विस्तार Django के सामान्य दृश्य
- 16. $ से एक आंशिक दृश्य देखें। AJAX पोस्ट
- 17. Django संदर्भ चर और AJAX प्रतिक्रिया
- 18. Django AJAX त्रुटि प्रतिक्रिया सर्वोत्तम अभ्यास
- 19. Django, एक अन्य दृश्य में एक दृश्य प्रदर्शित?
- 20. AJAX
- 21. AJAX कॉल
- 22. django का उपयोग कर AJAX अनुरोध कैसे प्राप्त करें?
- 23. प्रॉक्सी विरासत
- 24. प्रॉक्सी
- 25. प्रॉक्सी
- 26. प्रॉक्सी
- 27. प्रॉक्सी
- 28. प्रॉक्सी
- 29. प्रॉक्सी
- 30. प्रॉक्सी
मैंने इसका परीक्षण नहीं किया है, लेकिन मेरा मानना है कि यह कोड केवल प्रतिक्रिया निकाय की प्रतिलिपि करेगा, प्रतिक्रिया के HTTP शीर्षलेख नहीं, जिसमें सर्वर से बहुत उपयोगी जानकारी हो सकती है। –
@ डॉन: आप पूरी तरह से सही हैं! –