django 解決跨域問題

由于安全問題,瀏覽器會(huì)有一個(gè)同源策略,對(duì)于不同源的站點(diǎn)之間的請(qǐng)求會(huì)做限制(跨域限制是瀏覽器的原因,而不是服務(wù)器的原因)

同源策略

同源指域名(IP),協(xié)議,端口都相同,不同源的客戶端腳本(javascript)在沒有授權(quán)的情況下,不能讀寫對(duì)方的資源。

跨域的判定流程

  • 瀏覽器先根據(jù)同源策略對(duì)前端頁面和后臺(tái)交互地址做匹配,若同源,則直接發(fā)送數(shù)據(jù)請(qǐng)求;若不同源,則發(fā)送跨域請(qǐng)求。
  • 服務(wù)器解析程序收到瀏覽器跨域請(qǐng)求后,根據(jù)自身配置返回對(duì)應(yīng)文件頭。若未配置過任何允許跨域,則文件頭里不包含Access-Control-Allow-origin字段,若配置過域名,則返回Access-Control-Allow-origin+ 對(duì)應(yīng)配置規(guī)則里的域名的方式。
  • 瀏覽器根據(jù)接受到的http文件頭里的Access-Control-Allow-origin字段做匹配,若無該字段,說明不允許跨域;若有該字段,則對(duì)字段內(nèi)容和當(dāng)前域名做比對(duì),如果同源,則說明可以跨域,瀏覽器發(fā)送該請(qǐng)求;若不同源,則說明該域名不可跨域,不發(fā)送請(qǐng)求

django解決跨域請(qǐng)求的問題

  • 安裝django-cors-headers
pip install django-cors-headers
  • 配置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',
)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. 什么是跨域 跨域,是指瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對(duì)JavaScri...
    cbw100閱讀 6,486評(píng)論 2 86
  • 什么是跨域 跨域,是指瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對(duì)JavaScript實(shí)...
    Yaoxue9閱讀 1,413評(píng)論 0 6
  • 什么是跨域 跨域,是指瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對(duì)JavaScript實(shí)...
    HeroXin閱讀 956評(píng)論 0 4
  • 什么是跨域 跨域,是指瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對(duì)JavaScript實(shí)...
    他方l閱讀 1,139評(píng)論 0 2
  • <轉(zhuǎn)>詳解跨域(最全的解決方案) 什么是跨域跨域,是指瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。它是由瀏覽器的同源策略造成的,...
    涅槃快樂是金閱讀 5,075評(píng)論 0 3

友情鏈接更多精彩內(nèi)容