Веб-приложение django должно сделать ajax-вызовы внешнему URL-адресу. В разработке я обслуживаю непосредственно из django, поэтому у меня есть проблема с перекрестными доменами. Каков способ django написать прокси для вызова ajax?django ajax proxy view
ответ
Я прав, что вы спрашиваете о том, как написать представление в Django, которое может принимать входящий запрос AJAX, выдать запрос удаленному серверу и затем вернуть полученный ответ браузеру?
Если это так, то это на самом деле не Django-конкретный вопрос - удаленные вызовы можно сделать с Питона urllib2 или httplib, а затем вы просто должны поставить:
return HttpResponse(received_response)
- в вашем Джанго прокси-зрения , Я не предполагаю обработки ответа здесь, потому что, если это просто прокси для вызова AJAX, тогда JavaScript ожидает необработанные данные.
я натыкался на этот вопрос, пытаясь ответить на него сам, и нашел это приложение 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/images/logo.png извлекать и возвращать файл по адресу http://imageserver.com/logo.png.
Строки запроса перенаправляются, в то время как заголовки HTTP, такие как файлы cookie и данные POST, не являются (это довольно легко добавить, если вам это нужно).
Примечание: Это в основном предназначено для использования в целях развития. Правильный способ обработки проксирования на производстве - это HTTP-сервер (например, Apache или Nginx).
Все дело в том, чтобы передавать файлы cookie и POST-данные, поэтому вместо того, чтобы сообщать нам о том, как легко добавлять файлы cookie и POST-данные, вы могли бы просто написать код? –
Да, возможно, вы могли бы добавить в части, чтобы передавать файлы cookie и данные POST? –
- 1. django: ajax view structure
- 2. Вызов Django View from Ajax
- 3. Django View on Ajax call
- 4. Django as reverse proxy
- 5. Django proxy admin
- 6. Twisted + Django + Reverse Proxy
- 7. DJANGO models proxy inharitence
- 8. Пример использования django-proxy?
- 9. Django & AJAX search view дает мне KeyError
- 10. Django test ajax endpoint in view
- 11. Возврат нескольких элементов из Django View (ajax)
- 12. отправка json данные из django-view ajax
- 13. Django view with cross-domain Ajax
- 14. Django proxy model and ForeignKey
- 15. Django Import-Export proxy model
- 16. Модели Django-reversion и proxy
- 17. ExtJS Ajax Proxy - кодировать extraParams
- 18. Ajax Proxy в WebSphere Portal
- 19. Базовый URL для Django, Behind Nginx Proxy
- 20. Расширение django auth login view
- 21. Django writing generic update view
- 22. Передача списка значений в django view через jQuery ajax call
- 23. Http302 Ответ при использовании Ajax для сообщения в Django view
- 24. Как разбирать объект JSON в Django View from Ajax POST
- 25. Опубликовать через (ajax/javascript) в django view printing empty queryset
- 26. Django view не возвращает оператор возврата после Ajax-get
- 27. jQuery отправить объект js через ajax в django view
- 28. django view + AJAX: как получить данные в следующей форме POST
- 29. используя django ajax uploader in view и template
- 30. View centric design with Django
Я не проверял это, но считаю, что этот код будет копировать тело ответа, а не HTTP-заголовки ответа, которые могут содержать много полезной информации с сервера. –
@ Don: Вы совершенно правы! –