您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:使用Flask和Django中解决跨域请求问题

51自学网 2021-10-30 22:43:45
  python
这篇教程使用Flask和Django中解决跨域请求问题写得很实用,希望能帮到您。

Flask解决跨域

1、下载flask_cors包

pip install flask-cors

2、使用flask_cors的CORS

代码示例

from flask_cors import *app = Flask(__name__)CORS(app, supports_credentials=True)

Flask-CORS文档: https://flask-cors.readthedocs.io/en/latest/

Django解决跨域

1、安装django-cors-headers

pip install django-cors-headers

2、修改settings.py

INSTALLED_APPS = [    ...    'corsheaders',    ...]MIDDLEWARE_CLASSES = (    'django.middleware.security.SecurityMiddleware',    'django.contrib.sessions.middleware.SessionMiddleware',    'corsheaders.middleware.CorsMiddleware', # 添加这一行    'django.middleware.common.CommonMiddleware',    # 'django.middleware.csrf.CsrfViewMiddleware', 注释这一行    'django.contrib.auth.middleware.AuthenticationMiddleware',    'django.contrib.messages.middleware.MessageMiddleware',    'django.middleware.clickjacking.XFrameOptionsMiddleware',)# 跨域增加忽略CORS_ALLOW_CREDENTIALS = True #  指明在跨域访问中,后端是否支持对cookie的操作CORS_ORIGIN_ALLOW_ALL = True # 允许所有主机请求你的APICORS_ORIGIN_WHITELIST = ( # 跨域请求白名单,为空时默认为全部    'http://127.0.0.1:8080',    'http://localhost:8080',)CORS_ALLOW_METHODS = (    'DELETE',    'GET',    'OPTIONS',    'PATCH',    'POST',    'PUT',    'VIEW',)CORS_ALLOW_HEADERS = (    'XMLHttpRequest',    'X_FILENAME',    'accept-encoding',    'authorization',    'content-type',    'dnt',    'origin',    'user-agent',    'x-csrftoken',    'x-requested-with',)

补充:Flask和Django的区别

(1)Flask

Flask确实很“轻”,不愧是Micro Framework,从Django转向Flask的开发者一定会如此感慨,除非二者均为深入使用过

Flask自由、灵活,可扩展性强,第三方库的选择面广,开发时可以结合自己最喜欢用的轮子,也能结合最流行最强大的Python库

入门简单,即便没有多少web开发经验,也能很快做出网站

非常适用于小型网站

非常适用于开发web服务的API

开发大型网站无压力,但代码架构需要自己设计,开发成本取决于开发者的能力和经验

各方面性能均等于或优于Django

Django自带的或第三方的好评如潮的功能,Flask上总会找到与之类似第三方库

Flask灵活开发,Python高手基本都会喜欢Flask,但对Django却可能褒贬不一

Flask与关系型数据库的配合使用不弱于Django,而其与NoSQL数据库的配合远远优于Django

Flask比Django更加Pythonic,与Python的philosophy更加吻合

(2)Django

Django太重了,除了web框架,自带ORM和模板引擎,灵活和自由度不够高

Django能开发小应用,但总会有“杀鸡焉用牛刀”的感觉

Django的自带ORM非常优秀,综合评价略高于SQLAlchemy

Django自带的模板引擎简单好用,但其强大程度和综合评价略低于Jinja

Django自带ORM也使Django与关系型数据库耦合度过高,如果想使用MongoDB等NoSQL数据,需要选取合适的第三方库,且总感觉Django+SQL才是天生一对的搭配,Django+NoSQL砍掉了Django的半壁江山

Django目前支持Jinja等非官方模板引擎

Django自带的数据库管理app好评如潮

Django非常适合企业级网站的开发:快速、靠谱、稳定

Django成熟、稳定、完善,但相比于Flask,Django的整体生态相对封闭

Django是Python web框架的先驱,用户多,第三方库最丰富,最好的Python库,如果不能直接用到Django中,也一定能找到与之对应的移植

Django上手也比较容易,开发文档详细、完善,相关资料丰富

以上为个人经验,希望能给大家一个参考,也希望大家多多支持51zixue.net。如有错误或未考虑完全的地方,望不吝赐教。


Django request.META.get()获取不到header头的原因分析
Django跨域请求无法传递Cookie的解决
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。