我有一个基于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 文件,在加载 jquery 1.9 的 localhost(默认端口 80)上可用。我打开浏览器控制台尝试$.ajax
对cherrypy 服务器执行任何AJAX 请求。我一直在尝试:
$.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
没有任何效果。我正在使用 jsonpXMLHttpRequest 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)
使用 jsonp(它发送 GET 而不是 POST 很神秘)。周围有一些类似的问题,我试过了,这些是我的结果(仍然有问题)。
PS 服务器完全没问题,因为所有 curl 测试都通过了。跨域的东西有问题。