使用Flask和Django中解决跨域请求问题

作者:K先森~ 时间:2023-01-16 10:03:10 

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 # 允许所有主机请求你的API
CORS_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上手也比较容易,开发文档详细、完善,相关资料丰富

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

来源:https://blog.csdn.net/willbkimps/article/details/91492954

标签:Flask,Django,跨域,请求
0
投稿

猜你喜欢

  • 介绍27款经典的CSS框架

    2011-03-04 16:24:00
  • 如何使用Script Encoder?

    2010-06-05 12:42:00
  • Python调用Fortran的三种形式

    2021-01-10 13:25:08
  • python判断自身是否正在运行的方法

    2022-07-30 02:34:44
  • 详解用Python进行时间序列预测的7种方法

    2023-02-14 18:55:34
  • SQL Server中通用数据库角色权限的处理详解

    2024-01-18 17:24:27
  • golang beego框架路由ORM增删改查完整案例

    2024-05-09 15:00:59
  • python和java哪个学起来更简单

    2023-06-11 22:49:59
  • python通过pil模块将raw图片转换成png图片的方法

    2021-08-25 00:37:31
  • python如何对数组进行降维

    2022-12-27 18:51:32
  • PHP-FPM运行状态的实时查看及监控详解

    2023-11-22 22:45:22
  • 网站程序员如何应对web标准

    2007-05-11 16:52:00
  • tkinter动态显示时间的两种实现方法

    2021-05-24 23:40:35
  • Go 自定义error错误的处理方法

    2024-02-16 09:03:45
  • 详解用Node.js实现Restful风格webservice

    2024-05-13 09:35:20
  • 解决大于5.7版本mysql的分组报错Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated

    2024-01-16 14:08:53
  • python3应用windows api对后台程序窗口及桌面截图并保存的方法

    2023-10-23 12:29:19
  • 基于jquery自己写tab滑动门(通用版)

    2024-04-22 22:21:09
  • 在MySQL中使用子查询和标量子查询的基本操作教程

    2024-01-15 15:00:08
  • 基于python和flask实现http接口过程解析

    2022-06-01 11:46:36
  • asp之家 网络编程 m.aspxhome.com