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