Tornado—添加请求头允许跨域请求访问
跨域请求访问
如果是前后端分离,那就肯定会遇到cros跨域请求难题,可以设置一个BaseHandler,然后继承即可。
class BaseHandler(tornado.web.RequestHandler):
def __init__(self, *argc, **argkw):
super(BaseHandler, self).__init__(*argc, **argkw) # 解决跨域问题
def set_default_headers(self):
self.set_header("Access-Control-Allow-Origin", "*") # 这个地方可以写域名
self.set_header("Access-Control-Allow-Headers", "x-requested-with")
self.set_header("Access-Control-Allow-Methods", "POST, GET, OPTIONS")
self.set_header("Access-Control-Max-Age", 1000)
self.set_header("Content-type", "application/json") def get(self):
self.write('request get') def post(self):
self.write('request post') # vue一般需要访问options方法, 如果报错则很难继续,所以只要通过就行了,当然需要其他逻辑就自己控制。
def options(self):
# 返回方法1
self.set_status(204)
self.finish()
# 返回方法2
self.write('{"errorCode":"00","errorMessage","success"}')
继承BaseHandler类
class AdminTasks(BaseHandler):
# 重写了BaseHandler父类的get方法
def get(self):
# 处理业务逻辑
return self.write(json.dumps({"status": "success", "data": "请求成功"})) # 重写了BaseHandler父类的post方法
def post(self):
# 处理业务逻辑
return self.write(json.dumps({"status": "success", "data": "请求成功"}))
主文件Main.py文件中
class Application(tornado.web.Application):
def __init__(self):
handlers = [
(r"/tasks", AdminTasks), # 显示个人所有任务
]
tornado.web.Application.__init__(self, handlers, **settings) if __name__ == "__main__":
tornado.options.parse_command_line()
app = Application()
app.listen(options.port)
print("visit at", "http://127.0.0.1:%s" % options.port)
tornado.ioloop.IOLoop.instance().start()
这时候前端页面就可以通过:http://49.236.68.166:8008/tasks,访问后端程序了。上面的代码就部署在49.236.68.166这台服务器上面。
参考:https://www.cnblogs.com/renfanzi/p/6952871.html,https://www.cnblogs.com/zhangkui/p/11416575.html
附加内容:【Https异常】This request has been blocked; the content must be served over HTTPS
https://www.cnblogs.com/liqing1009/p/11290537.html,https://www.cnblogs.com/sslwork/p/6028940.html,https://www.cnblogs.com/756623607-zhang/p/11790283.html
Tornado—添加请求头允许跨域请求访问的更多相关文章
- 客户端ajax请求为实现Token验证添加headers后导致正常请求变为options跨域请求解决方法
客户端为了实现token认证,通过Jquery的ajaxSetup方法全局配置headers: 全局配置headers后会导致部分不需要token认证的请求变为options请求,导致跨域访问.报错信 ...
- 利用Access-Control-Allow-Origin响应头解决跨域请求原理
传统的跨域请求没有好的解决方案,无非就是jsonp和iframe,随着跨域请求的应用越来越多,W3C提供了跨域请求的标准方案(Cross-Origin Resource Sharing).IE8.Fi ...
- 【JS跨域请求】Ajax跨域请求JSONP
前两天被问到ajax跨域如何解决,还真被问住了,光知道有个什么jsonp,迷迷糊糊的没有说上来.抱着有问题必须解决的态度,我看了许多资料,原来如此... 为何一直知道jsonp,但一直迷迷糊糊的不明白 ...
- axios发送自定义请求头的跨域解决
前端发送来的axios请求信息 this.$axios.request({ url:'http://127.0.0.1:8001/pay/shoppingcar/', method:'post', ...
- 利用Access-Control-Allow-Origin响应头解决跨域请求
//允许任何域名访问 header("Access-Control-Allow-Origin: *"); //指定域名允许跨域 header("Access-Contro ...
- JavaScript JSON timer(计时器) AJAX HTTP请求 同源策略 跨域请求
JSON 介绍 1. JSON: JavaScript Object Notation 是一种轻量级的数据交换格式. 它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是 ...
- ajax跨域请求,状态码200,F12控制台报错
在接口的地方加上请求头.//跨域请求header('Access-Control-Allow-Origin:*'); 不要在ajax里面加!!!!!!!!!
- jQuery jsonp跨域请求
跨域的安全限制都是对浏览器端来说的,服务器端是不存在跨域安全限制的. 浏览器的同源策略限制从一个源加载的文档或脚本与来自另一个源的资源进行交互. 如果协议,端口和主机对于两个页面是相同的,则两个页面具 ...
- Vuex、axios、跨域请求处理和import/export的注意问题
一.Vuex 1.介绍 vuex是一个专门为Vue.js设计的集中式状态管理架构. 对于状态,我们把它理解为在data中需要共享给其他组件使用的部分数据. Vuex和单纯的全局对象有以下不同: 1. ...
随机推荐
- Java中替换字符串中特定字符,replaceAll,replace,replaceFirst的区别
使用“;”替换过字符串中的“,” public class Test01 {public static void main(String[] args) {String number = " ...
- BZOJ2440完全平方数(莫比乌斯反演)
Description 小 X 自幼就很喜欢数.但奇怪的是,他十分讨厌完全平方数.他觉得这些数看起来很令人难受.由此,他也讨厌所有是完全平方数的正整数倍的数.然而这丝毫不影响他对其他数的热爱. 这天是 ...
- Fusion360_Generative Design 入门学习笔记
2019.12.17更新 初次见到衍生式设计的时候感觉非常惊艳,现在觉得这个功能就是个弟弟,只能做一些中看不中用的东西.这个方法的理论基础是拓扑优化,想做research的同学可参阅"如何入 ...
- centos7 启动停止命令
apache启动systemctl start httpd停止systemctl stop httpd重启systemctl restart httpd mysql启动systemctl start ...
- srvany.exe读取配置文件问题
使用instsrv.exe与srvany.exe将自己的程序弄成免登录系统就能自动启动了,然而程序运行需要读取相应的配置文件,所以程序是跑起来了,但不能正常使用,找了很久终于找到了答案.在之前的基础上 ...
- hdu 2955 Robberies (01背包好题)
Robberies Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- 《Java练习题》进阶练习题(二)
编程合集: https://www.cnblogs.com/jssj/p/12002760.html 前言:不仅仅要实现,更要提升性能,精益求精,用尽量少的时间复杂度和空间复杂度解决问题. [程序58 ...
- Android开发模版代码(4)——状态栏设置
下面的代码是基于开源项目SystemBarTint,我们需要添加其依赖 compile 'com.readystatesoftware.systembartint:systembartint:1.0. ...
- Oracle转SqlServer
基础数据所对应的类型不同 在Oracle中有一些基础类型与Sqlserver中名字一样,但是所存储的数据格式不同,Date类型在Oracle中精确到秒,在Sqlserver中只能精确到天 表的结构 O ...
- Linux 桥接网络不自动分配IP的问题
之前遇到过好多次,知道什么原因就是忘了命令怎么敲,还要去搜索,写一遍加强下记忆,并总结下. 情况一 :网卡冲突问题 1 , 网卡问题 有安装过oracle VM VirtualBox 的,会和VMwa ...