在使用django-rest-framework開發專案的時候我們總是避免不了跨域的問題,因為現在大多數的專案都是前後端分離,前後端專案部署在不同的web伺服器上,因為我們是後端程式設計師,因此我要通過後端的程式實現跨域。當然如果前端框架是Vue的話,則可以代理服務實現跨域,我也就知道一點點,如果有興趣,大家可以自行搜尋哦。
DRF後端實現跨域第三方擴充套件———djangocorsheaders,在介紹之前,我先介紹兩個概念:同源策略、跨域
同源策略
同源策略/SOP(Same origin policy)是一種約定,是瀏覽器的一種安全機制。這裡同源需要”協議+域名+埠”三者都相同,否則不能進行Ajax訪問。
跨域
不同源之間的網站通訊就是跨域。
安裝
pip install django-cors-headers
註冊
INSTALLED_APPS = (
`corsheaders`,
)
新增中介軟體
MIDDLEWARE = [
`corsheaders.middleware.CorsMiddleware`, #最好新增至第一行
]
配置白名單
#單個配置
CORS_ORIGIN_WHITELIST =(
` 域名`,
)
#正則配置:
CORS_ORIGIN_REGEX_WHITELIST =(r`^(https?://)?(w+.)?jim.com $`,)
或者直接允許所有主機跨域
CORS_ORIGIN_ALLOW_ALL = True 預設為False
請求頭及請求方法的配置:
#預設可以使用的非標準請求頭,需要使用自定義請求頭時,就可以進行修改
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…