DRF跨域後端解決之django-cors-headers

在使用django-rest-framework開發項目的時候咱們老是避免不了跨域的問題,由於如今大多數的項目都是先後端分離,先後端項目部署在不一樣的web服務器上,由於咱們是後端程序員,所以我要經過後端的程序實現跨域。固然若是前端框架是Vue的話,則能夠代理服務實現跨域,我也就知道一點點,若是有興趣,你們能夠自行搜索哦。
DRF後端實現跨域第三方擴展———djangocorsheaders,在介紹以前,我先介紹兩個概念:同源策略、跨域前端

同源策略

同源策略/SOP(Same origin policy)是一種約定,是瀏覽器的一種安全機制。這裏同源須要"協議+域名+端口"三者都相同,不然不能進行Ajax訪問。git

跨域

不一樣源之間的網站通訊就是跨域。程序員

安裝

pip install django-cors-headers

註冊

INSTALLED_APPS = (
    'corsheaders',
)

添加中間件

MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware', #最好添加至第一行
]

配置白名單

#單個配置
CORS_ORIGIN_WHITELIST  =(
     ' 域名',
)
#正則配置:
CORS_ORIGIN_REGEX_WHITELIST  =(r'^(https?://)?(\w+\.)?jim\.com $',)

或者直接容許全部主機跨域github

CORS_ORIGIN_ALLOW_ALL = True 默認爲False

容許攜帶cookie

CORS_ALLOW_CREDENTIALS = True

請求頭及請求方法的配置:

#默承認以使用的非標準請求頭,須要使用自定義請求頭時,就能夠進行修改
CORS_ALLOW_HEADERS = (
    'accept',
    'accept-encoding',
    'authorization',
    'content-type',
    'dnt',
    'origin',
    'user-agent',
    'x-csrftoken',
    'x-requested-with',
)
#默認請求方法
CORS_ALLOW_METHODS = (
    'DELETE',
    'GET',
    'OPTIONS',
    'PATCH',
    'POST',
    'PUT',
)

防止CSRF

#添加信任的站點 django1.9引入
CSRF_TRUSTED_ORIGINS = (
    'change.allowed.com',
)

通常狀況下,咱們配置這些就足夠,固然最爲一個出名的擴展,確定作的很完美,更多的配置,請訪問:https://github.com/ottoyiu/dj...web

相關文章
相關標籤/搜索