django解決跨域請求的問題
django解決跨域請求的問題
解決方案
1.安裝django-cors-headers
pip install django-cors-headers
- 1
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', )
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
OK!問題解決!html
其餘解決方案
另外還從網上看到其餘兩種解決方案,但都不太合適。在此列出,供你們參考前端
1.使用JSONP
使用Ajax獲取json數據時,存在跨域的限制。不過,在Web頁面上調用js的script腳本文件時卻不受跨域的影響,JSONP就是利用這個來實現跨域的傳輸。所以,咱們須要將Ajax調用中的dataType從JSON改成JSONP(相應的API也須要支持JSONP)格式。
JSONP只能用於GET請求。vue
2.直接修改Django中的views.py文件
修改views.py中對應API的實現函數,容許其餘域經過Ajax請求數據:
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 responsejava