CORS实现跨域Ajax
Posted 失落的黎明
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CORS实现跨域Ajax相关的知识,希望对你有一定的参考价值。
客户端
#!/usr/bin/env python import tornado.ioloop import tornado.web class MainHandler(tornado.web.RequestHandler): def get(self, *args, **kwargs): self.render(\'index.html\') def post(self, *args, **kwargs): self.render(\'index.html\') class CorsHandler(tornado.web.RequestHandler): def get(self, *args, **kwargs): self.render(\'index.html\') def post(self, *args, **kwargs): self.render(\'index.html\') settings ={ \'template_path\':\'views\',#html文件模板路径配置 \'static_path\':\'statics\',#css,js文件路径配置 \'static_url_prefix\':\'/sss/\', } application = tornado.web.Application([ (r"/index", MainHandler), (r"/cors", CorsHandler), ],**settings) if __name__ == "__main__": application.listen(8000) tornado.ioloop.IOLoop.instance().start()
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <input type="button" value="Jsonp" onclick="JsonpAjax();"> <input type="button" value="DOJsonp" onclick="DoJsonpAjax();"> <script src="{{static_url(\'jquery-3.1.1.js\')}}"></script> <script> / function DoJsonpAjax() { $.ajax({ url:\'http://tao.com:8001/cors\', type:\'POST\', data:{\'k1\':\'v1\'}, success:function (arg) { console.log(arg) } }) } function JsonpAjax() { $.ajax({ url:\'http://tao.com:8001/cors\', type:\'PUT\', headers:{\'h1\':\'HH1\'}, data:{\'k1\':\'v1\'}, xhrFields:{withCredentials:true}, success:function (arg) { console.log(arg) } }) } // function DoJsonpAjax() { //// var tag = document.createElement(\'script\'); //// tag.src = "http://www.jxntv.cn/data/jmd-jxtv2.html?callback=list"; //// document.head.appendChild(tag); //// //// document.head.removeChild(tag); ////// // $.ajax({ // url: "http://tao.com:8001/index", // type:"POST", // dataType: \'jsonp\', // jsonp:\'callback\',//相当于在url: "http://tao.com:8001/index?callback= xxoo", // jsonpCallback: "xxoo"//相当于在url: "http://tao.com:8001/index?callback= xxoo", // }) // } </script> </body> </html>
服务端
#!/usr/bin/env python import tornado.ioloop import tornado.web class MainHandler(tornado.web.RequestHandler): def get(self, *args, **kwargs): callback = self.get_argument(\'callback\') self.write("{}([11,22,33])".format(callback)) def post(self, *args, **kwargs): self.write(\'t2.post\') class CorsHandler(tornado.web.RequestHandler): def get(self, *args, **kwargs): self.write(\'index.get\') def post(self, *args, **kwargs): self.set_header("Access-Control-Allow-Origin","http://taochen.com:8000") self.write(\'index.post\') def options(self, *args, **kwargs): self.set_header("Access-Control-Allow-Origin", "http://taochen.com:8000") self.set_header("Access-Control-Allow-Methods", "PUT,DELETE") self.set_header("Access-Control-Allow-Headers", "h1") self.set_header("Access-Control-Allow-Credentials",\'true\') def put(self, *args, **kwargs): print(self.cookies) self.set_cookie(\'kk\',\'kkk2\') self.set_header("Access-Control-Allow-Origin", "http://taochen.com:8000") self.set_header("Access-Control-Allow-Credentials", \'true\') self.write("ok") settings ={ \'template_path\':\'views\',#html文件模板路径配置 \'static_path\':\'statics\',#css,js文件路径配置 \'static_url_prefix\':\'/sss/\', } application = tornado.web.Application([ (r"/index", MainHandler), (r"/cors", CorsHandler), ],**settings) if __name__ == "__main__": application.listen(8001) tornado.ioloop.IOLoop.instance().start()
以上是关于CORS实现跨域Ajax的主要内容,如果未能解决你的问题,请参考以下文章