Django view отправляет пустой ответ с правильными заголовками - PullRequest
1 голос
/ 19 января 2012

У меня есть проект Django на сервере Dreamhost, который имеет несколько представлений, которые возвращают ответ Json. Вчера я перенес свой проект Django с локального компьютера (localhost) на сервер Dreamhost, на котором работает apache. Теперь, если я вызову свое представление django через jquery для

http://www.abc.com/projects/

Он должен вернуть мне все проекты, которые есть в моей базе данных mongodb, но вместо этого он возвращает:

В Firefox - только заголовки без ответа

Connection  Keep-Alive
Content-Type    application/json
Date    Thu, 19 Jan 2012 09:03:34 GMT
Keep-Alive  timeout=2, max=100
Server  Apache
Status  200 OK
Transfer-Encoding   chunked

On Chrome - Нет заголовков и данных ответа. Выдает ошибку:

XMLHttpRequest cannot load http://abc.com/Projects/. Origin null is not allowed by Access-Control-Allow-Origin.**

Если я просто получаю доступ к http://www.abc.com/projects/ через мой веб-браузер, он возвращает мне результаты в формате json, но не в случае, если я использую JavaScript / Jquery.

Ранее я использовал это связующее ПО , чтобы разрешить другим доменам запрашивать и получать ответ на моем локальном компьютере с помощью встроенного сервера django. Но теперь, когда я работаю на сервере apache, он перестает работать, поэтому я удалил его из файла Settings.py.

Я не знаю, почему появляется эта ошибка. Пожалуйста, помогите

* EDIT *

Как сказал @burhan, я использовал jsonp на стороне клиента, и теперь мой сервер возвращает json, но браузер выдает ошибку перед его анализом. Ошибка: неожиданный токен

JSON я получаю в ответ:

{"projects": [{"projectName": "carmella", "projectId": "4f13c7475fcff30710000000"}, {"projectName": "SeaMonkey", "projectId": "4f1677b75fcff37c03000001"}]}

1 Ответ

2 голосов
/ 19 января 2012

Вы работаете в той же самой политике происхождения песочнице.Так как ваш сервер www.abc.com и вы обращаетесь к abc.com - источник не тот, поэтому скрипт не выполняется.

У вас есть несколько вариантов:

  1. Убедитесь, что URL совпадает точно - чтобы избежать той же изолированной программной среды политики происхождения.
  2. Используйте jsonp в вашей библиотеке JavaScript.
...