XMLHttpRequest无法加载http://example.com/myapp/jsonurl/。请求的资源缺少'Access-Control-Allow-Origin'头部

0 投票
2 回答
1527 浏览
提问于 2025-04-30 17:00

在Django项目的HTML页面中使用$.ajax()请求,结果在Firefox上能正常工作,但在Chrome上却不行。我在谷歌上尝试了很多方法,但都没有结果,浪费了两天时间,请帮帮我。

在Chrome控制台上出现的错误信息是:

XMLHttpRequest无法加载http://example.com/myapp/jsonurl/。 请求的资源上没有'Access-Control-Allow-Origin'这个头信息。因此,来自'http://www.example.com'的请求被拒绝了。

我的代码是:

ajax code:
 $.ajax({
    url: "http://example.com/myapp/jsonurl/",
    dataType:"json",
    type:"GET",
    success: function(data){
      alert(data);
    },
    error: function(xhRequest, ErrorText, thrownError){
      alert(xhRequest+ ErrorText+thrownError);
    }
  });

网址:

url(r'^jsonurl/', planViews.jsonurl,name='jsonurl'),

视图:

def jsonurltest(request):
    context = RequestContext(request)

    return HttpResponse(json.dumps("{'jsondata':'ajax test'}"), content_type="application/json")
暂无标签

2 个回答

0

有两种解决办法:

第一种是确保使用相同的名称(比如都用www.example.com)。

第二种是如果你必须使用两个不同的名称,确保提供AJAX请求的服务器添加一个头信息:
Access-Control-Allow-Origin: http://www.example.com

想了解更多信息,可以查看这里:http://jquery-howto.blogspot.com/2013/09/jquery-cross-domain-ajax-request.html

0

最后我找到了问题的解决办法,我的项目里有两个问题。

1:安装这个库 https://github.com/ottoyiu/django-cors-headers

2:我在我的视图里用了“@login_required”,当我把它去掉后,所有浏览器,包括Chrome,都能正常工作了。

撰写回答