同源策略:同源策略/SOP(Sameoriginpolicy)是一類承諾,由Netscape公司1995年引進電腦瀏覽器,這是電腦瀏覽器最關鍵也最基本安全配置,如今全部適用JavaScript瀏覽器都是會使用這種對策。假如缺乏了同源策略,電腦瀏覽器很容易受XSS、CSFR等進攻。
同宗就是指"協議書+網站域名+服務器端口"三個同樣,就算兩種不同的域名跳轉相同ip詳細地址,也不是同宗。
源便是協議書、網站域名和服務器端口。
協議書:http,https
跨域請求:前面要求URL的協議書、網站域名、服務器端口與前端界面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"#響應信息的內容格式 response["Access-Control-Allow-Origin"]="*"#允許跨域請求的源地址,*表示:允許所有地址 response["Access-Control-Allow-Methods"]="POST,GET,OPTIONS"#允許跨域請求的具體方法 response["Access-Control-Max-Age"]="1000"#用來指定本次預檢請求的有效期,單位為秒,,在此期間不用發出另一條預檢請求。 response["Access-Control-Allow-Headers"]="*" returnresponse
跨域請求進行步驟為
1、電腦瀏覽器會初次先傳送options要求了解后面是不是準許跨域請求,后面查看授權管理中是否存在這倆網站域名
2、如果網站域名在授權管理中即在回應結論中告之電腦瀏覽器準許跨域請求
3、電腦瀏覽器再次傳送post要求,帶上賬號登錄數據信息到后面,進行登錄驗證實際操作
綜上所述,這篇文章就給大家介紹到這里了,希望可以給大家帶來幫助。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/130275.html
摘要:實現跨域的原理通過方式請求載入并執行一個文件,相當于通過的形式的導入一個外部的方法語法該函數是簡寫的函數,等價于在中,您可以通過使用形式的回調函數來加載其他網域的數據,如。將自動替換為正確的函數名,以執行回調函數。 更多詳情見http://blog.zhangbing.club/Ja... 最近在項目開發的過程中遇到一些Javascript 跨域請求的問題,今天抽空對其進行總結一下,以...
摘要:四傳遞信息給父頁面參考跨域子頁面傳給父頁面父頁面代碼崔渙測試父頁面參數中有屬性,就是父窗口發送過來的數據把父窗口發送過來的數據顯示在子窗口中。五簡單分析和安全問題傳送過來的信息如下圖,幾乎包含了所有應該有的信息。 背景:由于同源策略存在,javascript的跨域一直都是一個棘手的問題。父頁面無法直接獲取iframe內部的跨域資源;同時,iframe內部的跨域資源也無法將信息直接傳遞給...
摘要:首先遇到的就是跨域問題,但是在攜帶請求過程中出現了服務端獲取不到情況。瀏覽器將請求分成兩類簡單請求和非簡單請求。而瀏覽器對這兩種請求的處理是不一樣的。 背景 在一個前后端分離開發的項目中,使用SpringSecurity做安全框架,用JWT來實現權限管理提升RESTful Api的安全性。首先遇到的就是跨域問題,但是在攜帶jwt請求過程中出現了服務端獲取不到jwt情況。 跨域問題 在開...
閱讀 919·2023-01-14 11:38
閱讀 891·2023-01-14 11:04
閱讀 750·2023-01-14 10:48
閱讀 2035·2023-01-14 10:34
閱讀 956·2023-01-14 10:24
閱讀 833·2023-01-14 10:18
閱讀 506·2023-01-14 10:09
閱讀 583·2023-01-14 10:02