同源策略:同源策略/SOP(Sameoriginpolicy)是一類承諾,由Netscape公司1995年引進電腦瀏覽器,這是電腦瀏覽器最關(guān)鍵也最基本安全配置,如今全部適用JavaScript瀏覽器都是會使用這種對策。假如缺乏了同源策略,電腦瀏覽器很容易受XSS、CSFR等進攻。
同宗就是指"協(xié)議書+網(wǎng)站域名+服務(wù)器端口"三個同樣,就算兩種不同的域名跳轉(zhuǎn)相同ip詳細地址,也不是同宗。
源便是協(xié)議書、網(wǎng)站域名和服務(wù)器端口。
協(xié)議書:http,https
跨域請求:前面要求URL的協(xié)議書、網(wǎng)站域名、服務(wù)器端口與前端界面URL不一樣便是跨域請求
在Django中處理跨域問題
一、
#1、安裝第三方庫django-cors-headers #2、在settings.py中添加'corsheaders.middleware.CorsMiddleware',在SessionMiddleware和CommonMiddleware的中間 #3、在INSTALLED_APPS里添加“corsheaders” INSTALLED_APPS=[ 'search.apps.SearchConfig', 'data.apps.DataConfig', 'record_data.apps.RecordDataConfig', 'deleted_data.apps.DeletedDataConfig', 'mgmt.apps.MgmtConfig', 'c_test.apps.CTestConfig', 'rest_framework', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'corsheaders',#新增 ] #4、在中間件中添加corsheaders.middleware.CorsMiddleware,django.middleware.common.CommonMiddleware MIDDLEWARE=[ #'utils.middleware.ExceptionMiddleware', 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'corsheaders.middleware.CorsMiddleware',#新增/必須在common中間件上面 'django.middleware.common.CommonMiddleware', #'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] #5、在settings.py底部增加 CORS_ALLOW_CREDENTIALS=True#允許攜帶cookie CORS_ORIGIN_ALLOW_ALL=True#放行所有 CORS_ORIGIN_WHITELIST=('*')#白名單 #CORS_ALLOW_METHODS:字符串列表,允許用哪些HTTP請求方法。 CORS_ALLOW_METHODS=( 'DELETE', 'GET', 'OPTIONS', 'PATCH', 'POST', 'PUT', 'VIEW', ) #CORS_ALLOW_HEADERS:字符串列表,允許使用哪些非標準HTTP請求頭。 CORS_ALLOW_HEADERS=( 'accept', 'accept-encoding', 'authorization', 'content-type', 'dnt', 'origin', 'user-agent', 'x-csrftoken', 'x-requested-with', )
二、
#可以自己注冊一個中間件,在中間件process_response方法中對response進行封裝 defprocess_response(self,request,response): response["Content-Type"]="application/json"#響應(yīng)信息的內(nèi)容格式 response["Access-Control-Allow-Origin"]="*"#允許跨域請求的源地址,*表示:允許所有地址 response["Access-Control-Allow-Methods"]="POST,GET,OPTIONS"#允許跨域請求的具體方法 response["Access-Control-Max-Age"]="1000"#用來指定本次預(yù)檢請求的有效期,單位為秒,,在此期間不用發(fā)出另一條預(yù)檢請求。 response["Access-Control-Allow-Headers"]="*" returnresponse
跨域請求進行步驟為
1、電腦瀏覽器會初次先傳送options要求了解后面是不是準許跨域請求,后面查看授權(quán)管理中是否存在這倆網(wǎng)站域名
2、如果網(wǎng)站域名在授權(quán)管理中即在回應(yīng)結(jié)論中告之電腦瀏覽器準許跨域請求
3、電腦瀏覽器再次傳送post要求,帶上賬號登錄數(shù)據(jù)信息到后面,進行登錄驗證實際操作
綜上所述,這篇文章就給大家介紹到這里了,希望可以給大家?guī)韼椭?/p>
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/130275.html
摘要:實現(xiàn)跨域的原理通過方式請求載入并執(zhí)行一個文件,相當于通過的形式的導(dǎo)入一個外部的方法語法該函數(shù)是簡寫的函數(shù),等價于在中,您可以通過使用形式的回調(diào)函數(shù)來加載其他網(wǎng)域的數(shù)據(jù),如。將自動替換為正確的函數(shù)名,以執(zhí)行回調(diào)函數(shù)。 更多詳情見http://blog.zhangbing.club/Ja... 最近在項目開發(fā)的過程中遇到一些Javascript 跨域請求的問題,今天抽空對其進行總結(jié)一下,以...
摘要:四傳遞信息給父頁面參考跨域子頁面?zhèn)鹘o父頁面父頁面代碼崔渙測試父頁面參數(shù)中有屬性,就是父窗口發(fā)送過來的數(shù)據(jù)把父窗口發(fā)送過來的數(shù)據(jù)顯示在子窗口中。五簡單分析和安全問題傳送過來的信息如下圖,幾乎包含了所有應(yīng)該有的信息。 背景:由于同源策略存在,javascript的跨域一直都是一個棘手的問題。父頁面無法直接獲取iframe內(nèi)部的跨域資源;同時,iframe內(nèi)部的跨域資源也無法將信息直接傳遞給...
摘要:首先遇到的就是跨域問題,但是在攜帶請求過程中出現(xiàn)了服務(wù)端獲取不到情況。瀏覽器將請求分成兩類簡單請求和非簡單請求。而瀏覽器對這兩種請求的處理是不一樣的。 背景 在一個前后端分離開發(fā)的項目中,使用SpringSecurity做安全框架,用JWT來實現(xiàn)權(quán)限管理提升RESTful Api的安全性。首先遇到的就是跨域問題,但是在攜帶jwt請求過程中出現(xiàn)了服務(wù)端獲取不到j(luò)wt情況。 跨域問題 在開...
閱讀 910·2023-01-14 11:38
閱讀 877·2023-01-14 11:04
閱讀 740·2023-01-14 10:48
閱讀 1981·2023-01-14 10:34
閱讀 942·2023-01-14 10:24
閱讀 818·2023-01-14 10:18
閱讀 498·2023-01-14 10:09
閱讀 572·2023-01-14 10:02