我有一个基于Cherrypy的简单Python Web服务器。 它的资源应该提供API。 服务器有以下代码来提供CORS:
def CORS():
cherrypy.response.headers["Access-Control-Allow-Origin"] = "*"
if __name__ == "__main__":
cherrypy.tools.CORS = cherrypy.Tool('before_finalize', CORS)
cherrypy.quickstart(PyCachedAdmin(), config={'/': {'request.dispatch': cherrypy.dispatch.MethodDispatcher()}})
服务器正在本地主机的8080端口上运行。现在我有一个HTML文件,在本地主机上可用(默认端口80),该文件加载了jquery 1.9。我打开浏览器控制台尝试使用$.ajax
执行任何AJAX请求到cherrypy服务器。我一直在尝试:
$.ajax({
url:'http://localhost:8080/',
type: "POST",
dataType: "json",
data: {command:"version"}
}).done(function(){
console.log('hej');
});
并且
$.ajax({
url:'http://localhost:8080/',
type: "POST",
crossDomain: true,
dataType: "jsonp",
data: {command:"version"}
}).done(function(){
console.log('hej');
});
并且
$.support.cors = true
什么都试过了,但是都没有用。当使用jsonp时,我要么得到XMLHttpRequest cannot load http://localhost:8080/. Origin http://localhost is not allowed by Access-Control-Allow-Origin.
,要么得到GET http://localhost:8080/?callback=jQuery19102827550224028528_1382823727186&command=version&_=1382823727187 404 (Not Found)
(它神秘地发送GET而不是POST)。周围有一些类似的问题,我尝试了它们,但结果还是出现问题。
PS:服务器完全正常,因为所有的curl测试都通过了。跨域问题出在哪里还是有问题。
$.ajax({ url:'http://localhost:8080/', type: "POST", data: {command:"version"} }).done(function(){ console.log('hej'); });
时,我收到了错误信息:XMLHttpRequest无法加载http://localhost:8080/。来源http://localhost不被Access-Control-Allow-Origin允许。
- ducin