Python跨域问题解决集合
Flask
安装插件
pip install flask-cors
使用 CORS函数配置全局路由
from flask_cors import *
app = Flask(__name__)
CORS(app, supports_credentials=True)
from flask_cors import CORS
app = Flask(__name__,)
# r'/*' 是通配符,让本服务器所有的URL 都允许跨域请求
CORS(app, resources=r'/*')
# 上传文件
@uploadFiles.route('/upload', methods=['POST'])
def uploadFile():
result_text = {"statusCode": 200,"message": "文件上传成功"}
response = make_response(jsonify(result_text))
response.headers['Access-Control-Allow-Origin'] = '*'
response.headers['Access-Control-Allow-Methods'] = 'OPTIONS,HEAD,GET,POST'
response.headers['Access-Control-Allow-Headers'] = 'x-requested-with'
return response
Django
安装插件
pip install django-cors-headers
添加APP
INSTALLED_APPS = (
'corsheaders',
)
添加中间件
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware', #最好添加至第一行
]
配置白名单
#单个配置
CORS_ORIGIN_WHITELIST =(
' 域名',
)
#正则配置:
CORS_ORIGIN_REGEX_WHITELIST =(r'^(https?://)?(\w+\.)?jim\.com $',)
或者直接允许所有主机跨域
CORS_ORIGIN_ALLOW_ALL = True 默认为False
允许携带cookie
CORS_ALLOW_CREDENTIALS = True
请求头及请求方法的配置:
#默认可以使用的非标准请求头,需要使用自定义请求头时,就可以进行修改
CORS_ALLOW_HEADERS = (
'accept',
'accept-encoding',
'authorization',
'content-type',
'dnt',
'origin',
'user-agent',
'x-csrftoken',
'x-requested-with',
)
#默认请求方法
CORS_ALLOW_METHODS = (
'DELETE',
'GET',
'OPTIONS',
'PATCH',
'POST',
'PUT',
)
防止CSRF
#添加信任的站点 django1.9引入
CSRF_TRUSTED_ORIGINS = (
'change.allowed.com',
)
更多配置详情点击这里
Tornado
解决方案
import tornado.web
class BaseHandler(tornado.web.RequestHandler):
def __init__(self,*args,**kwargs):
super().__init__(*args,**kwargs)
self.host = ""
self.port = ""
# 在初始化方法中添加设置跨域的方法
self.set_default_headers()
# 处理OPTIONS域检请求
def post(self):
self.set_status(204)
self.finish()
# 设置跨域的具体方法
def set_default_headers(self):
super().set_default_headers()
# 设置允许的请求头
self.set_header("Access-Control-Allow-Methods","GET,POST,PUT,DELETE,OPTIONS")
self.set_header("X-XSS-Protecion","1")
self.set_header("Content-Security-Policy","default-src 'self'")
self.set_header("Access-Control-Allow-Credentials","true")
# 设置一些自己定义的请求头
self.set_header("Access-Control-Allow-Headers",
"Content-Type,Access-Control-Allow-Headers,X-Auth-Token,Y-Auth-Token"
)
self.set_header("Content-Type","application/json; charset=UTF-8")
# 设置允许本地调试的域名通过!
self.set_header("Access-Control-Allow-Origin",self.request.headers.get("Origin","http://localhost:9090"))
# 如果后面的域名设置为 * ,表示允许所有的域名通过
# self.set_header("Access-Control-Allow-Origin","*")
# self.set_header("Access-Control-Allow-Origin",self.request.headers.get("Origin","*"))
调用
class InterFaceHandler(BaseHandler):
def set_default_headers(self):
self.allowMyOrigin()
def get(self, *args, **kwargs):
pass
Python跨域问题解决集合的更多相关文章
- django 前端请求跨域问题解决
django 前端请求跨域问题解决 笔者之前在做django-restful-api开发的时候,在前端请求页面发送请求的时候直接出现301,域名重定向的问题,经过一番查阅资料,终于得到了非常完美的解决 ...
- Vue项目在开发环境跨域和生成环境部署跨域问题解决
一.在dev环境下的跨域问题解决1.项目使用的是axios请求网络,将baseUrl修改为/api (这里是使用webpack提供的代理功能将/api代理成目标接口host) axios.defaul ...
- FastAdmin 关于跨域问题解决
FastAdmin 关于跨域问题解决 之前很久之前收集到社区的问题. https://forum.fastadmin.net/thread/277 今天又有人问到,无法打开,估计是网络问题. 以下为完 ...
- vue跨域问题解决(生产环境)
vue跨域问题解决(使用webpack打包的) 配置代理:(config下index.js文件) module.exports = { dev: { env: require('./dev.env') ...
- ajax请求ashx跨域问题解决办法
ajax请求ashx跨域问题解决办法 https://blog.csdn.net/windowsliusheng/article/details/51583566 翻译windowsliusheng ...
- 版本控制,django缓存,跨域问题解决
复习 分页: 1. 简单分页 2. 偏移分页 3. 加密分页 解析器:客户处理前端提交来的数据 urlencode: body体中的数据格式: key=value& formdata编码:为区 ...
- python 跨域处理方式
因为浏览器的同源策略限制,不是同源的脚本不能操作其他源下面的资源,想操作另一个源下面的资源就属于跨域了,这里说的跨域是广义跨域,我们常说的代码中请求跨域,是狭义的跨域,即在脚本代码中向非同源域发送ht ...
- Nginx 学习笔记(八)http和https跨域问题解决
今天在做网易云信的时候,修改了一下源码,使用自己的服务端进行登陆, 注意:这里是使用http域名访问https域名 1.下载源码,配置了IM的域名,im.tinywan.com 没有开启https,具 ...
- vue中axios访问Java后端跨域问题解决
问题背景: 前后端分离,前端选用Vue,后端选用Java,vue编译出的静态页面采用ngix发布,在前端访问后端时出现跨域问题. 解决方法: 跨域的问题解决方法有好多种,这里是通过服务端解决,以下是代 ...
随机推荐
- (Py练习)数组元素调换
# 输入数组,最大的元素与第一个元素调换,最小的与最后一个元素调换,输出数组 # 数组的输入输出.元素交换使用不同的函数来实现 import math p = 0 def inp(numbers): ...
- 自定义Tomcat部署目录
1.创建配置文件 在Tomcat安装目录中conf-->Catalina-->localhost目录下,创建项目访问请求路径.xml文件 内容如下: <Context path=&q ...
- Python中Socket编程(TCP、UDP)
1. TCP协议下的如何解决粘包问题 TCP(transport control protocol 传输控制协议) 使用Nagle算法,将多次间隔较小且数据量小的数据,合并成大的数据块:接受端无法识 ...
- 2021最新Java面试题全集-20210326版
在手撕了数千道网络流传的面试题,外加十多个不眠之夜, 终于从里面精心挑选出约500道题目, 做为大家求职.跳槽前复习准备面试使用. 一:挑选题目的原则: 常考的.常被面试问到的 题目有一定的深度和难度 ...
- Arduino杀手在此!!ESP 8266 NodeMCU小白手把手入门(二)(解惑篇)
上一次更新主要是简单介绍了NodeMCU的基本知识并且进行了一次简单的实操演示,最近有一些读者向我提出了一些小问题,所以决定出一期解惑篇,主要针对的是基础知识不是太牢固,或是喜欢刨根问底的小可爱们.里 ...
- EFCore之增删改查
1. 连接数据库 通过依赖注入配置应用程序,通过startup类的ConfigureService方法中的AddDbContext将EFCore添加到依赖注入容器 public void Config ...
- JAVA的基本介绍和JDK的安装
JAVA帝国 JAVA特性和优势 简单 面向对象 可复制性 高性能 分布式 动态性 多线性 安全性 健壮性 JAVA三大版本 javaSE:标准版(桌面程序.控制台开发) javaME(嵌入式开发) ...
- 【CentOS_7】一行shell实现自动清理过期日志
昨日web测试环境登录白屏,慌忙登上机器查看,半天没找到问题. 不知哪根筋不对,df -h 一看 , /dev/sda1 已经100%. 立马 du -sh *,发现log日志有点大. 手工清理后,业 ...
- JAVA并发(3)-ReentrantReadWriteLock的探索
1. 介绍 本文我们继续探究使用AQS的子类ReentrantReadWriteLock(读写锁).老规矩,先贴一下类图 ReentrantReadWriteLock这个类包含读锁和写锁,这两种锁都存 ...
- 重新整理 .net core 实践篇————配置系统之盟约[五]
前言 在asp .net core 中我们会看到一个appsettings.json 文件,它就是我们在服务中的各种配置,是至关重要的一部门. 不管是官方自带的服务,还是我们自己编写的服务都是用它来实 ...