Django查看使用正确的标头发送空回复

时间:2012-01-19 09:13:21

标签: python django apache mongodb django-nonrel

我在Dreamhost服务器上有Django项目,它有几个返回Json响应的视图。昨天我将我的Django项目从本地机器(localhost)移植到运行apache的dreamhost服务器。现在如果我通过jquery调用我的django视图

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

在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则不会

之前我使用这个middleware允许其他域请求并使用django内置服务器在我的本地机器上获得响应。但是现在当我在apache服务器上运行它停止工作所以我删除了它来自Settings.py文件。

我不知道为什么会出现这个错误。请帮忙

*的 修改 *

正如@burhan建议我在客户端使用jsonp,现在我的服务器正在返回json但浏览器在解析之前发出错误。错误是:意外令牌

JSON我的回复是:

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

1 个答案:

答案 0 :(得分:2)

您正在进入same origin policy沙箱。由于您的服务器是 www.abc.com 而您正在访问 abc.com - 原因不一样,这就是脚本未执行的原因。

您有几个选择:

  1. 确保网址完全匹配 - 以避免使用相同的原始策略沙箱。
  2. 在您的javascript库中使用jsonp