Ajax跨域错误



我遇到了这个问题:

我有一个django (python)服务器提供XML文件在localhost:8000

我有一个在localhost:8080上使用tomcat的日常项目,需要调用这个XML文件(在javascript中使用ajax)

它调用文件,但永远不会得到它们。

tomcat需要做什么才能得到这个文件?

谢谢。

编辑:

这是我的请求:

$.ajax({
      type: 'GET',
      url: "http://127.0.0.1:8000/charger/entreprise/",
      dataType: "xml",
      crossDomain : true,
      success: function(xml){
            alert(xml);
        }
    });

这是我的请求头:

Host    127.0.0.1:8000
User-Agent  Mozilla/5.0 (X11; Linux i686; rv:8.0) Gecko/20100101 Firefox/8.0
Accept  application/json, text/javascript, */*; q=0.01
Accept-Language fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding gzip, deflate
Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection  keep-alive
Referer http://localhost:8080/web/guest/home
Origin  http://localhost:8080

事实上,我想知道问题是否来自javascript,我认为这是因为服务器。

在尝试了许多不工作的解决方案之后,我终于解决了我的问题你们是对的,JSONP是解决方案,即使我必须适应django,我的具体问题,这一点也不容易。

您必须使用JSONP (JSON填充)来进行跨域AJAX请求。}

有关JSONP的信息请参阅此链接

http://www.ibm.com/developerworks/library/wa-aj-jsonp1/

并且jquery也有JSONP特性。查看jquery文档

浏览器默认阻止跨域请求。如果您想绕过这个问题,请查看JSONP了解更多细节。

如果跨域ajax是您唯一的问题,您可以使用JSONP。

各种JS框架已经实现了它(例如寻找JQuery AJAX的'crossDomain'设置)

尝试为AJAX请求设置dataType: "jsonp xml"

正如其他人提到的,JSONP将解决您的问题。它允许跨域AJAX功能。

另一种方法是在Django站点和Tomcat站点前使用web服务器,并使用代理请求。例如,您的主站运行在localhost:80上,并根据url将其代理到适当的后端服务器。这样,从客户端和JavaScript的角度来看,HTML和JSON请求将发送到同一服务器。

相关内容

  • 没有找到相关文章

最新更新