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. ...
随机推荐
- ARTS-S golang goroutines and channels(一)
先用golang实现一个简单的tcp服务端,假定文件名为clock1.go // clock1.go package main import ( "fmt" "io&qu ...
- HTML中用AJAX方式把数据存储到浏览器中并取出
把对象只有转成字符串形式才可以存入,取出则是把字符串转成对象
- RT-Thread的位图调度算法分析(最新版)
RT-Thread的内核调度算法 rt-thread的调度算法为基于优先级调度和基于时间片轮转调度共存的策略.rt-thread内核中存在多个线程优先级,并且支持多个线程具有同样的线程优先级.线程级别 ...
- Android中实现异步轮询上传文件
前言 前段时间要求项目中需要实现一个刷卡考勤的功能,因为涉及到上传图片文件,为加快考勤的速度,封装了一个异步轮询上传文件的帮助类 效果 先上效果图 设计思路 数据库使用的框架是GreenDao,一个 ...
- 解决Vue报错:TypeError: Cannot read property 'scrollHeight' of undefined
如图: 解决问题的根源: 这个DOM元素找不到,或者是初始化的时候没有初始化成功,总之就是这个DOM元素并没有创建成功就进行了操作.保证这个DOM元素创建成功了就不会存在这个问题了.判断当前DOM元素 ...
- 一遍文章搞清楚VO、DTO、DO、PO的概念、区别
作者:Cat Qi 概念: VO(View Object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来. DTO(Data Transfer Object):数据传输对 ...
- eclipse Outline里图标的含义
source: http://www.cnblogs.com/qdwyg2013/p/6489019.html 先说颜色: 绿色:public 黄色:protected 蓝色:no modifier ...
- deleteSections & deleteRows 我踩得坑
需求背景 有这样一个需求,有一个用来展示商品的列表,你可以从别的数据源添加过来,能添加当然就能删除了,这时候就用到了UITableView/UICollextionView组或者cell的删除,但在测 ...
- Python 进阶之源码分析:如何将一个类方法变为多个方法?
前一篇文章<Python 中如何实现参数化测试?>中,我提到了在 Python 中实现参数化测试的几个库,并留下一个问题: 它们是如何做到把一个方法变成多个方法,并且将每个方法与相应的参数 ...
- 从KafkaConsumer看看Kafka(一)
Kafka的消息模型为发布订阅模型,消息生产者将消息发布到主题(topic)中,一个或多个消费者订阅(消费)该主题消息并消费,此模型中发布到topic中的消息会被所有消费者所订阅到,先介绍Kafk ...