我有一个基于 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()}})
服务器运行在 localhost:8080 上。现在我有了一个 HTML 文件,可以在 localhost(默认端口 80)上使用,它加载 jquery 1.9。我打开浏览器控制台来尝试$.ajax
向cherrypy 服务器执行任何AJAX 请求。我一直在尝试:
$.ajax({
url:'http://localhost:8080/',
type: "POST",
dataType: "json",
data: {command:"version"}
}).done(function(){
console.log('hej');
});
and
$.ajax({
url:'http://localhost:8080/',
type: "POST",
crossDomain: true,
dataType: "jsonp",
data: {command:"version"}
}).done(function(){
console.log('hej');
});
and
$.support.cors = true
但没有任何作用。我要么XMLHttpRequest cannot load http://localhost:8080/. Origin http://localhost is not allowed by Access-Control-Allow-Origin.
or GET http://localhost:8080/?callback=jQuery19102827550224028528_1382823727186&command=version&_=1382823727187 404 (Not Found)
当使用 jsonp 时(奇怪的是它发送 GET 而不是 POST)。周围有一些类似的问题,我尝试过,这些是我的结果(仍然有问题)。
PS 服务器完全正常,因为所有curl 测试都通过了。跨域的东西出了问题。