我遇到了这个问题:
我有一个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请求将发送到同一服务器。