使用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 # 允許所有主機(jī)請求你的API
CORS_ORIGIN_WHITELIST = ( # 跨域請求白名單,為空時默認(rèn)為全部
'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',
)
補(bǔ)充:Flask和Django的區(qū)別
(1)Flask
Flask確實很“輕”,不愧是Micro Framework,從Django轉(zhuǎn)向Flask的開發(fā)者一定會如此感慨,除非二者均為深入使用過
Flask自由、靈活,可擴(kuò)展性強(qiáng),第三方庫的選擇面廣,開發(fā)時可以結(jié)合自己最喜歡用的輪子,也能結(jié)合最流行最強(qiáng)大的Python庫
入門簡單,即便沒有多少web開發(fā)經(jīng)驗,也能很快做出網(wǎng)站
非常適用于小型網(wǎng)站
非常適用于開發(fā)web服務(wù)的API
開發(fā)大型網(wǎng)站無壓力,但代碼架構(gòu)需要自己設(shè)計,開發(fā)成本取決于開發(fā)者的能力和經(jīng)驗
各方面性能均等于或優(yōu)于Django
Django自帶的或第三方的好評如潮的功能,F(xiàn)lask上總會找到與之類似第三方庫
Flask靈活開發(fā),Python高手基本都會喜歡Flask,但對Django卻可能褒貶不一
Flask與關(guān)系型數(shù)據(jù)庫的配合使用不弱于Django,而其與NoSQL數(shù)據(jù)庫的配合遠(yuǎn)遠(yuǎn)優(yōu)于Django
Flask比Django更加Pythonic,與Python的philosophy更加吻合
(2)Django
Django太重了,除了web框架,自帶ORM和模板引擎,靈活和自由度不夠高
Django能開發(fā)小應(yīng)用,但總會有“殺雞焉用牛刀”的感覺
Django的自帶ORM非常優(yōu)秀,綜合評價略高于SQLAlchemy
Django自帶的模板引擎簡單好用,但其強(qiáng)大程度和綜合評價略低于Jinja
Django自帶ORM也使Django與關(guān)系型數(shù)據(jù)庫耦合度過高,如果想使用MongoDB等NoSQL數(shù)據(jù),需要選取合適的第三方庫,且總感覺Django+SQL才是天生一對的搭配,Django+NoSQL砍掉了Django的半壁江山
Django目前支持Jinja等非官方模板引擎
Django自帶的數(shù)據(jù)庫管理app好評如潮
Django非常適合企業(yè)級網(wǎng)站的開發(fā):快速、靠譜、穩(wěn)定
Django成熟、穩(wěn)定、完善,但相比于Flask,Django的整體生態(tài)相對封閉
Django是Python web框架的先驅(qū),用戶多,第三方庫最豐富,最好的Python庫,如果不能直接用到Django中,也一定能找到與之對應(yīng)的移植
Django上手也比較容易,開發(fā)文檔詳細(xì)、完善,相關(guān)資料豐富
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
python實現(xiàn)的一個火車票轉(zhuǎn)讓信息采集器
這篇文章主要介紹了python實現(xiàn)的一個火車票轉(zhuǎn)讓信息采集器,采集信息來源是58同程或者趕集網(wǎng),需要的朋友可以參考下2014-07-07
python 限制函數(shù)執(zhí)行時間,自己實現(xiàn)timeout的實例
今天小編就為大家分享一篇python 限制函數(shù)執(zhí)行時間,自己實現(xiàn)timeout的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01
Python如何獲得百度統(tǒng)計API的數(shù)據(jù)并發(fā)送郵件示例代碼
這篇文章主要給大家介紹了關(guān)于Python如何獲得百度統(tǒng)計API的數(shù)據(jù)并發(fā)送郵件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01
python數(shù)據(jù)預(yù)處理 :數(shù)據(jù)共線性處理詳解
今天小編就為大家分享一篇python數(shù)據(jù)預(yù)處理 :數(shù)據(jù)共線性處理詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
Python?基于Selenium實現(xiàn)動態(tài)網(wǎng)頁信息的爬取
本文主要介紹了通過Selenium和webdrive等庫,對動態(tài)網(wǎng)頁的信息進(jìn)行爬取。文中的示例代碼非常詳細(xì),感興趣的同學(xué)快來跟隨小編一起學(xué)習(xí)吧2021-12-12
Python編寫的com組件發(fā)生R6034錯誤的原因與解決辦法
pythoncom27.dll可能沒有包含manifest信息,或者沒有包含正確的manifest信息,或者系統(tǒng)中的c++ runtime library受到破壞都有可能造成這種現(xiàn)象2013-04-04

