摘要:本文詳見文件夾提供主服務(wù)開啟服務(wù)提供一個(gè)靜態(tài)容器開啟服務(wù)文件夾客戶端頁(yè)面,發(fā)送或者瀏覽器跨域相關(guān)跨域是為了保證服務(wù)端的安全,不允許隨便的請(qǐng)求,這是瀏覽器的安全行為和不同域,瀏覽器并不知道映射到的是,所以認(rèn)為他們不同域普通跨域之當(dāng)瀏覽
本文詳見
github: https://github.com/captainJac...
server文件夾 server.js 提供主server api服務(wù)node server/server.js 開啟服務(wù)
staticServer.js 提供一個(gè)靜態(tài)html容器node server/staticServer.js 開啟服務(wù)
www文件夾 cross-domain.html 客戶端頁(yè)面,發(fā)送XHR或者fetch 瀏覽器跨域相關(guān)跨域是為了保證服務(wù)端的安全,不允許隨便的請(qǐng)求,這是瀏覽器的安全行為
tips
localhost和127.0.0.1不同域,瀏覽器并不知道localhost映射到的是127.0.0.1,所以認(rèn)為他們不同域普通跨域之Access-Control-Allow-Origin
當(dāng)瀏覽器出現(xiàn)跨域報(bào)錯(cuò)時(shí),==其實(shí)服務(wù)器的響應(yīng)已經(jīng)到達(dá)瀏覽器了==,只不過(guò)瀏覽器會(huì)對(duì)比請(qǐng)求的頭信息,對(duì)比當(dāng)前域是否是被Access-Control-Allow-Origin頭信息允許的,如果不允許,則提示報(bào)錯(cuò)
JSONP對(duì)于link,script,image等標(biāo)簽src或ref是可以拿到非同域的資源,js動(dòng)態(tài)創(chuàng)建script標(biāo)簽則可獲取到數(shù)據(jù),這個(gè)不需要后端支持
CORS預(yù)請(qǐng)求&&跨域敲黑板:Access-Control-Allow-Origin并不能完全支持跨域,還有其他限制,比如使用fetch,有些自定義頭信息,超出允許范圍的方法等,在跨域的時(shí)候,都是不被允許的
預(yù)請(qǐng)求在以下允許范圍之外的,都需要通過(guò)預(yù)請(qǐng)求的驗(yàn)證&&一些限制
允許方法
GET
POST
HEAD
允許Content-Type
text/plain
multipart/form-data
application/x-www-form-urlencoded
請(qǐng)求頭限制,查看官方文檔吧
XMLHttpRequestUpload對(duì)象均沒有注冊(cè)任何時(shí)間監(jiān)聽器
請(qǐng)求中沒有使用ReadableStream對(duì)象
預(yù)請(qǐng)求根據(jù)什么來(lái)判斷這個(gè)請(qǐng)求是否是被允許的呢 - Response Headers信息,瀏覽器讀取Response Headers信息來(lái)知道當(dāng)前請(qǐng)求是不是被允許的
對(duì)于CORS跨域,限制條件有很多,如下,這些在限制條件之內(nèi)才可以允許
自定義的方法
Content-Type
頭信息
… 詳見官方文檔
以自定義頭信息舉例前端
fetch("http://127.0.0.1:8887", { method: "POST", // 此處添加一條自定義頭信息 headers: { "X-Test-Cors111": "test" } })
后端
response.writeHead(200, { "Access-Control-Allow-Origin": "*", })此時(shí)瀏覽器提示準(zhǔn)確的相應(yīng)的報(bào)錯(cuò)
此時(shí)后端需要如下,允許這種自定義頭信息,才可以可以正常返回
response.writeHead(200, { "Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "X-Test-Cors111" })
同理,還有以下其他的限制
"Access-Control-Allow-Headers": "X-Test-Cors111" //針對(duì)自定義頭信息
"Access-Control-Allow-Methods": "PUT, DELETE", // 針對(duì)自定義方法
"Access-Control-Max-Age": "1000", // Access-Control-Max-Age:當(dāng)前請(qǐng)求下面,以上述形式請(qǐng)求允許跨域的,1000s之內(nèi)不需要發(fā)送預(yù)請(qǐng)求來(lái)驗(yàn)證了,直接發(fā)起正式的請(qǐng)求即可
tips:
chrome devTools有時(shí)候會(huì)不提示options預(yù)請(qǐng)求的XHR?發(fā)送options預(yù)請(qǐng)求的不好驗(yàn)證查看詳細(xì)的http請(qǐng)求和響應(yīng)的內(nèi)容: curl -v www.baidu.com
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/99719.html
摘要:所以單頁(yè)應(yīng)用的部署,需要將所有的頁(yè)面請(qǐng)求都返回,瀏覽器下載了后會(huì)自動(dòng)解析并導(dǎo)航到對(duì)應(yīng)頁(yè)面。總結(jié)單頁(yè)應(yīng)用與以前的常規(guī)多頁(yè)面應(yīng)用還是有區(qū)別的,開發(fā)過(guò)程與后端解耦了,同時(shí)會(huì)出現(xiàn)跨域鑒權(quán)以及應(yīng)用部署的問題。 本文同步發(fā)布于我的個(gè)人博客上 - 單頁(yè)應(yīng)用的部署方案 本文主要簡(jiǎn)單講一下單頁(yè)應(yīng)用的開發(fā)及部署方法,默認(rèn)你懂一些服務(wù)端知識(shí)及nginx知識(shí),如果有任何可以在下方評(píng)論留言。 單頁(yè)應(yīng)用 SPA(...
摘要:反向代理前后端聯(lián)調(diào)跨域什么是跨域跨域,指的是瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。這時(shí)候,用反向代理實(shí)現(xiàn)跨域,是最簡(jiǎn)單的跨域方式。 keywords: Nginx反向代理 前后端聯(lián)調(diào) 跨域 1.什么是跨域 跨域,指的是瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對(duì)javascript施加的安全限制。 所謂同源是指,域名,協(xié)議,端口都相同。瀏覽器執(zhí)行javascrip...
摘要:想看重點(diǎn)的直接挪到文章底部,反向代理的配置跨域涉及到前后端開發(fā)的項(xiàng)目中,不可避免的涉及到了跨域的問題。瀏覽器的同源策略會(huì)導(dǎo)致跨域,這里同源策略又分為以下兩種同源策略禁止對(duì)不同源頁(yè)面進(jìn)行操作。同源策略禁止使用對(duì)象向不同源的服務(wù)器地址發(fā)起請(qǐng)求。 想看重點(diǎn)的直接挪到文章底部,nginx反向代理的配置 跨域 涉及到前后端開發(fā)的項(xiàng)目中,不可避免的涉及到了跨域的問題。跨域,指的是瀏覽器不能執(zhí)行其他...
摘要:想看重點(diǎn)的直接挪到文章底部,反向代理的配置跨域涉及到前后端開發(fā)的項(xiàng)目中,不可避免的涉及到了跨域的問題。瀏覽器的同源策略會(huì)導(dǎo)致跨域,這里同源策略又分為以下兩種同源策略禁止對(duì)不同源頁(yè)面進(jìn)行操作。同源策略禁止使用對(duì)象向不同源的服務(wù)器地址發(fā)起請(qǐng)求。 想看重點(diǎn)的直接挪到文章底部,nginx反向代理的配置 跨域 涉及到前后端開發(fā)的項(xiàng)目中,不可避免的涉及到了跨域的問題。跨域,指的是瀏覽器不能執(zhí)行其他...
摘要:用于告知瀏覽器可以將預(yù)先檢查請(qǐng)求返回結(jié)果緩存的時(shí)間,在緩存有效期內(nèi),瀏覽器會(huì)使用緩存的預(yù)先檢查結(jié)果判斷是否發(fā)送跨域請(qǐng)求。 跨域,老生常談的問題 簡(jiǎn)述 作為一只前端菜鳥,跨域方面只懂得JSONP和CORS,并未曾深入了解。但隨著春招越來(lái)越近,就算是菜鳥也要猛振翅膀。近幾日仔細(xì)研究了跨域問題,寫下這篇文章,希望對(duì)開發(fā)者們有所幫助。在讀本文前,希望您對(duì)以下知識(shí)略有了解。 瀏覽器同源策略 n...
閱讀 3027·2023-04-25 18:06
閱讀 3272·2021-11-22 09:34
閱讀 2857·2021-08-12 13:30
閱讀 2045·2019-08-30 15:44
閱讀 1661·2019-08-30 13:09
閱讀 1630·2019-08-30 12:45
閱讀 1715·2019-08-29 11:13
閱讀 3608·2019-08-28 17:51