遠(yuǎn)程辦公”">國務(wù)院聯(lián)防聯(lián)控機(jī)制新聞發(fā)布會(huì),多次肯定“云辦公”、“遠(yuǎn)程辦公”
807
2022-05-29
1.瀏覽器的同源策略
同源策略是瀏覽器的一個(gè)安全功能,不同源的客戶端腳本(js文件)在沒有明確授權(quán)的情況下,不能讀寫對(duì)方資源。只有同一個(gè)源的腳本賦予dom、讀寫cookie、session、ajax等操作的權(quán)限。 所以xyz.com下的js腳本采用ajax讀取abc.com里面的文件數(shù)據(jù)是會(huì)被拒絕的。
另外同源策略只對(duì)網(wǎng)頁的HTML文檔做了限制,對(duì)加載的其他靜態(tài)資源如javascript、css、圖片等仍然認(rèn)為屬于同源。
同源策略限制了從同一個(gè)源加載的文檔或腳本如何與來自另一個(gè)源的資源進(jìn)行交互。這是一個(gè)用于隔離潛在惡意文件的重要安全機(jī)制。
url由協(xié)議、域名、端口和路徑組成,如果兩個(gè)url的協(xié)議、域名和端口相同,則這兩個(gè)url是同源的。
舉例來說,http://www.example.com/dir/page.html這個(gè)網(wǎng)址,協(xié)議是http://,域名是www.example.com,端口是80(默認(rèn)端口可以省略)。它的同源情況如下。
1. 同源策略的目的,是為了保證用戶信息的安全,防止惡意的網(wǎng)站竊取數(shù)據(jù)。 2.頁面中的鏈接,重定向以及表單提交是不會(huì)受到同源策略限制的。 3.跨域資源的引入是可以的。但是js不能讀寫加載的內(nèi)容。如嵌入到頁面中的,,,
2.CORS跨域
Cross-Origin Resource Sharing(CORS)跨來源資源共享是一份瀏覽器技術(shù)的規(guī)范,提供了 Web 服務(wù)從不同域傳來沙盒腳本的方法,以避開瀏覽器的同源策略,是 JSONP 模式的現(xiàn)代版。與 JSONP 不同,CORS 除了 GET 要求方法以外也支持其他的 HTTP 要求。另一方面,JSONP 可以在不支持 CORS 的老舊瀏覽器上運(yùn)作。現(xiàn)代的瀏覽器都支持CORS。
我們使用django-cors-headers來解決后端對(duì)跨域訪問的支持。
使用django-cors-headers擴(kuò)展:
安裝
pip install django-cors-headers
添加應(yīng)用
INSTALLED_APPS = ( ... 'corsheaders', ... )
中間層設(shè)置
MIDDLEWARE = [ 'corsheaders.middleware.CorsMiddleware', ... ]
添加白名單
# CORS CORS_ORIGIN_WHITELIST = ( '127.0.0.1:8080', 'localhost:8080', 'www.meiduo.site:8080', 'api.meiduo.site:8000' ) CORS_ALLOW_CREDENTIALS = True # 允許攜帶cookie
①凡是出現(xiàn)在白名單中的域名,都可以訪問后端接口
②CORS_ALLOW_CREDENTIALS 指明在跨域訪問中,后端是否支持對(duì)cookie的操作。
3.跨域?qū)崿F(xiàn)流程
瀏覽器會(huì)第一次先發(fā)送options請求詢問后端是否允許跨域,后端查詢白名單中是否有這兩個(gè)域名
如果域名在白名單中則在響應(yīng)結(jié)果中告知瀏覽器允許跨域
瀏覽器第二次發(fā)送post請求,攜帶用戶登錄數(shù)據(jù)到后端,完成登錄驗(yàn)證操作
Ajax Django
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。