django解決跨域請求的問題詳解
解決方案
1.安裝django-cors-headers
pip install django-cors-headers
2.配置settings.py文件
INSTALLED_APPS = [ ... 'corsheaders', ... ] MIDDLEWARE_CLASSES = ( ... 'corsheaders.middleware.CorsMiddleware', 'django.middleware.common.CommonMiddleware', # 注意順序 ... ) #跨域增加忽略 CORS_ALLOW_CREDENTIALS = True CORS_ORIGIN_ALLOW_ALL = True CORS_ORIGIN_WHITELIST = ( '*' ) 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', 'Pragma', )
OK!問題解決!
其他解決方案
另外還從網上看到其他兩種解決方案,但都不太合適。在此列出,供大家參考
1.使用JSONP
使用Ajax獲取json數(shù)據(jù)時,存在跨域的限制。不過,在Web頁面上調用js的script腳本文件時卻不受跨域的影響,JSONP就是利用這個來實現(xiàn)跨域的傳輸。因此,我們需要將Ajax調用中的dataType從JSON改為JSONP(相應的API也需要支持JSONP)格式。
JSONP只能用于GET請求。
2.直接修改Django中的views.py文件
修改views.py中對應API的實現(xiàn)函數(shù),允許其他域通過Ajax請求數(shù)據(jù):
def myview(_request): response = HttpResponse(json.dumps({“key”: “value”, “key2”: “value”})) response[“Access-Control-Allow-Origin”] = “*” response[“Access-Control-Allow-Methods”] = “POST, GET, OPTIONS” response[“Access-Control-Max-Age”] = “1000” response[“Access-Control-Allow-Headers”] = “*” return response
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Python腳本實現(xiàn)12306火車票查詢系統(tǒng)
本文給大家分享我使用python3實現(xiàn)的12306火車票查詢系統(tǒng),小編分步驟給大家介紹的非常詳細,感興趣的朋友一起看看吧2016-09-09anaconda升級sklearn版本的實現(xiàn)方法
這篇文章主要介紹了anaconda升級sklearn版本的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-02-02Python?JMESPath庫輕松操作JSON進行數(shù)據(jù)查詢方法實例
這篇文章主要為大家介紹了Python?JMESPath庫輕松操作JSON方法實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2024-01-01