国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

跨域問(wèn)題詳解/django-cors-headers/django-cors-headers源碼

這篇具有很好參考價(jià)值的文章主要介紹了跨域問(wèn)題詳解/django-cors-headers/django-cors-headers源碼。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

介紹

# 以后只要前后端分離項(xiàng)目,都會(huì)出現(xiàn)跨域問(wèn)題,咱們要解決

# 同源策略
同源策略(Same origin policy)是一種約定,它是瀏覽器最核心也最基本的安全功能,如果缺少了同源策略,則瀏覽器的正常功能可能都會(huì)受到影響??梢哉f(shuō)Web是構(gòu)建在同源策略基礎(chǔ)之上的,瀏覽器只是針對(duì)同源策略的一種實(shí)現(xiàn)

請(qǐng)求的url地址,必須與瀏覽器上的url地址處于同域上:也就是[域名],[端口],[協(xié)議]相同.
http://127.0.0.1:8080
ftf://127.0.0.1:8080

比如:我在本地上的域名是127.0.0.1:8000,請(qǐng)求另外一個(gè)域名:127.0.0.1:8001一段數(shù)據(jù)

瀏覽器上就會(huì)報(bào)錯(cuò),個(gè)就是同源策略的保護(hù),如果瀏覽器對(duì)javascript沒(méi)有同源策略的保護(hù),那么一些重要的機(jī)密網(wǎng)站將會(huì)很危險(xiǎn)

請(qǐng)求發(fā)送,服務(wù)的執(zhí)行,數(shù)據(jù)也正常返回,只是被瀏覽器攔截了

# 正因?yàn)橥床呗缘拇嬖?,咱們?xiě)前后端分離的項(xiàng)目,無(wú)法正常獲取到數(shù)據(jù)


# 解決跨域問(wèn)題:
?? ?1 ?jsonp 跨域(不了解)
? ? 2 ?跨域資源共享(CORS) ?后端技術(shù)
? ? 3 ?Nginx代理


# CORS:跨域資源共享
CORS需要瀏覽器和服務(wù)器同時(shí)支持,所有瀏覽器都支持該功能
只需要服務(wù)的處理即可:只需要在在響應(yīng)頭中加入固定的頭就實(shí)現(xiàn)cors---》比如在響應(yīng)頭中加入Access-Control-Allow-Origin='*'---->get請(qǐng)求就沒(méi)有跨域了---》但是put請(qǐng)求還會(huì)有


# cors的請(qǐng)求分兩種
?? ?-簡(jiǎn)單請(qǐng)求,瀏覽器直接發(fā)起
? ? -非簡(jiǎn)單請(qǐng)求,瀏覽器先發(fā)送要給options預(yù)檢請(qǐng)求,服務(wù)端允許,再發(fā)送真正的請(qǐng)求
# 什么是簡(jiǎn)單請(qǐng)求,什么是非簡(jiǎn)單請(qǐng)求
?? ?# 如果屬于下面,就是簡(jiǎn)單請(qǐng)求
? ? 1 請(qǐng)求方法是以下三種方法之一:
? ? ? ? HEAD
? ? ? ? GET
? ? ? ? POST
? ? ?2 HTTP的頭信息不超出以下幾種字段:
? ? ? ? Accept
? ? ? ? Accept-Language
? ? ? ? Content-Language
? ? ? ? Last-Event-ID
? ? ? ? Content-Type:只限于三個(gè)值application/x-www-form-urlencoded、multipart/form-data、text/plain

? ? ? ??
# 使用cors解決跨域,就是再響應(yīng)頭中加入固定的一些東西,專(zhuān)門(mén)寫(xiě)個(gè)中間件
?? ? ? ?res['Access-Control-Allow-Headers'] = 'token'
? ? ? ? res['Access-Control-Allow-Methods'] = 'DELETE'
? ? ?? ?res['Access-Control-Allow-Origin'] = 'http://192.168.1.252:8080'

### 補(bǔ)充:######
前端訪問(wèn)的后端地址,一定要準(zhǔn)確
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-500562.html

自定義中間件,解決跨域問(wèn)題

##### common_mideleware.py
from django.utils.deprecation import MiddlewareMixin


### 自定義中間件解決跨域問(wèn)題---》以后其它框架都是這個(gè)原理---》django上有人做了
class CorsMiddleware(MiddlewareMixin):
    def process_response(self, request, response):
        if request.method == 'OPTIONS':
            response['Access-Control-Allow-Headers'] = 'token'
            response['Access-Control-Allow-Methods'] = 'DELETE'
        response['Access-Control-Allow-Origin'] = '*'
        return response
    
 ### 配置文件配置中間件
    MIDDLEWARE = [
        'utils.common_mideleware.CorsMiddleware'
    ]

django-cors-headers

####使用pip安裝
pip3 install django-cors-headers  -i  https://pypi.tuna.tsinghua.edu.cn/simple

#####添加到setting的app中
INSTALLED_APPS = (
	...
	'corsheaders',
	...
)
#### 添加中間件
MIDDLEWARE = [  
	...
	'corsheaders.middleware.CorsMiddleware',
	...
]
#### 4、setting下面添加下面的配置
CORS_ORIGIN_ALLOW_ALL = True
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',
	'token',
    # 此處可以自定義,寫(xiě)自己定義的頭
)

django-cors-headers源碼

# 核心代碼再中間件的---》process_response  3.0.14 版本
class CorsMiddleware(MiddlewareMixin):
    def process_response(self, request, response):
        if (
            not conf.CORS_ALLOW_ALL_ORIGINS
            and not self.origin_found_in_white_lists(origin, url)
            and not self.check_signal(request)
        ):
            return response
        if conf.CORS_ALLOW_ALL_ORIGINS and not conf.CORS_ALLOW_CREDENTIALS:
            response[ACCESS_CONTROL_ALLOW_ORIGIN] = "*"
        else:
            response[ACCESS_CONTROL_ALLOW_ORIGIN] = origin
        if request.method == "OPTIONS":
            response[ACCESS_CONTROL_ALLOW_HEADERS] = ", ".join(conf.CORS_ALLOW_HEADERS)
            response[ACCESS_CONTROL_ALLOW_METHODS] = ", ".join(conf.CORS_ALLOW_METHODS) 
        return response

到了這里,關(guān)于跨域問(wèn)題詳解/django-cors-headers/django-cors-headers源碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 徹底理解前端安全面試題(3)—— CORS跨域資源共享,解決跨域問(wèn)題,建議收藏(含源碼)

    徹底理解前端安全面試題(3)—— CORS跨域資源共享,解決跨域問(wèn)題,建議收藏(含源碼)

    前端關(guān)于網(wǎng)絡(luò)安全看似高深莫測(cè),其實(shí)來(lái)來(lái)回回就那么點(diǎn)東西,我總結(jié)一下就是 3 + 1 ?= 4,3個(gè)用字母描述的【分別是 XSS、CSRF、CORS】 + 一個(gè)中間人攻擊。當(dāng)然 CORS 同源策略是為了防止攻擊的安全策略,其他的都是網(wǎng)絡(luò)攻擊。除了這 4 個(gè)前端相關(guān)的面試題,其他的都是一些不常

    2024年02月01日
    瀏覽(21)
  • nginx設(shè)置add_header失效 配置cors跨域失效無(wú)效的解決方案

    nginx設(shè)置add_header失效 配置cors跨域失效無(wú)效的解決方案

    希望對(duì)大家有幫助,有用的話記得點(diǎn)個(gè)贊評(píng)個(gè)論,讓俺知道這個(gè)法子可以幫助到大家喲?。m然我這個(gè)法子很野) 最近在完成一個(gè)項(xiàng)目,后端API地址和前端地址不一致,這就涉及到了跨域的問(wèn)題。 由于服務(wù)端加了一層Nginx作為反代,所以很自然的想到要去 .conf 配置文件中 加

    2024年02月12日
    瀏覽(26)
  • Chrome 跨域問(wèn)題CORS 分析

    先疊個(gè)甲,有錯(cuò)誤,望溝通指正! has been blocked by CORS policy: Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. 類(lèi)似上面的報(bào)錯(cuò) ,就是出現(xiàn)了跨域限制訪問(wèn)問(wèn)題 同源策略(Same-Origin Policy),這個(gè)是瀏覽器的一個(gè)策略.也就

    2024年03月18日
    瀏覽(23)
  • 前端跨域解決方案之CORS詳解

    前端跨域解決方案之CORS詳解

    CORS 是一個(gè) W3C 標(biāo)準(zhǔn),全稱(chēng)是“跨源資源共享”( Cross-origin resource sharing ),或者通俗地 稱(chēng)為“ 跨域資源共享 ”。它允許瀏覽器向跨源的服務(wù)器,發(fā)出 XMLHttpRequest 請(qǐng)求,從而克服AJAX 只能同源使用的限制。 為了保證用戶(hù)信息的安全,所有的瀏覽器都遵循 同源策略 。 所謂

    2024年02月08日
    瀏覽(41)
  • Spring Boot中解決跨域問(wèn)題(CORS)

    Spring Boot中解決跨域問(wèn)題(CORS)

    首先解釋什么是跨域,跨域就是前端和后端的端口號(hào)不同;會(huì)產(chǎn)生跨域問(wèn)題,這里瀏覽器的保護(hù)機(jī)制(同源策略)。 同源策略:前端和后端的協(xié)議、域名、端口號(hào)三者都相同叫做同源。 我們看一下不同源: VUE:http://localhost:8080 Spring: http://localhost:8081/list 當(dāng)我們出現(xiàn)跨域問(wèn)題

    2024年02月06日
    瀏覽(88)
  • SpringCloudAlibaba:服務(wù)網(wǎng)關(guān)之Gateway的cors跨域問(wèn)題

    SpringCloudAlibaba:服務(wù)網(wǎng)關(guān)之Gateway的cors跨域問(wèn)題

    目錄 一:解決問(wèn)題 二:什么是跨域 三:cors跨域是什么?? 遇到錯(cuò)誤: ????????前端請(qǐng)求時(shí)報(bào)錯(cuò) 解決: 網(wǎng)關(guān)中添加配置文件, 注意springboot版本 ,添加配置。 跨域是指瀏覽器處于安全考慮,對(duì) JavaScript 發(fā)起的不同源的請(qǐng)求進(jìn)行限制的一種機(jī)制。 所謂同源是指協(xié)議,域名和

    2024年02月15日
    瀏覽(20)
  • 搞懂 API,跨域資源貢獻(xiàn) (CORS )和安全性問(wèn)題

    搞懂 API,跨域資源貢獻(xiàn) (CORS )和安全性問(wèn)題

    在 Web 應(yīng)用開(kāi)發(fā)中,API 是應(yīng)用程序和其他系統(tǒng)之間進(jìn)行數(shù)據(jù)交互的主要方式。 跨域資源共享(CORS)是一種常見(jiàn)的處理跨域請(qǐng)求的技術(shù),但同時(shí)也帶來(lái)了一些安全性問(wèn)題。我將分享 CORS 技術(shù)及其安全性問(wèn)題。 CORS 是指在瀏覽器端實(shí)現(xiàn)的機(jī)制,允許 Web 應(yīng)用程序或 API 向不同的域

    2024年02月03日
    瀏覽(32)
  • 解決系統(tǒng)開(kāi)發(fā)中的跨域問(wèn)題:CORS、JSONP、Nginx

    解決系統(tǒng)開(kāi)發(fā)中的跨域問(wèn)題:CORS、JSONP、Nginx

    本博客配套的源碼在這里 最近我在做一個(gè)系統(tǒng)的全棧開(kāi)發(fā),遇到了這樣一個(gè)問(wèn)題。 首先,我的前端是一個(gè)來(lái)自百度的開(kāi)源框架——Amis,它封裝自React.js,基于JSON配置。我下載了Amis提供的SDK文件夾,并進(jìn)行了代碼開(kāi)發(fā)。但是我在部署整個(gè)系統(tǒng)的時(shí)候遇到了跨域問(wèn)題。原因是,

    2024年01月20日
    瀏覽(29)
  • Node.js 使用 cors 中間件解決跨域問(wèn)題

    Node.js 使用 cors 中間件解決跨域問(wèn)題

    cors 是 Express 的一個(gè)第三方中間件。通過(guò)安裝和配置 cors 中間件,可以很方便地解決跨域問(wèn)題。 CORS (Cross-Origin Resource Sharing,跨域資源共享)由一系列 HTTP 響應(yīng)頭 組成, 這些 HTTP 響應(yīng)頭決定瀏覽器是否阻止前端 JS 代碼跨域獲取資源 。 瀏覽器的 同源安全策略 默認(rèn)會(huì)阻止網(wǎng)

    2024年01月20日
    瀏覽(62)
  • SpringBoot 配置CORS處理前后端分離跨域配置無(wú)效問(wèn)題解析

    瀏覽器有跨域限制,非同源策略(協(xié)議、主機(jī)名或端口不同)被視為跨域請(qǐng)求,解決跨域有跨域資源共享( CORS )、反向代理和 JSONP 的方式。本篇通過(guò) SpringBoot 的資源共享配置(CORS)來(lái)解決前后端分離項(xiàng)目的跨域,以及從原理上去解決跨域配置不生效的問(wèn)題。 使用前后端分離開(kāi)源項(xiàng)

    2023年04月23日
    瀏覽(45)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包