我在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"}]}
答案 0 :(得分:2)
您正在进入same origin policy沙箱。由于您的服务器是 www.abc.com 而您正在访问 abc.com - 原因不一样,这就是脚本未执行的原因。
您有几个选择: