本地跨域請求服務(wù)器調(diào)試

在網(wǎng)頁開發(fā)的過程中,時常需要進行跨域請求,去測試服務(wù)器請求數(shù)據(jù)。

  • 跨域限制是瀏覽器行為,不是服務(wù)器行為
    要理解和解決跨域問題,需要深刻理解-跨域限制是瀏覽器行為,不是服務(wù)器行為。這也是為什么跨域通過postman這類工具來直接請求服務(wù)器接口數(shù)據(jù),而在網(wǎng)頁中通過js就不可以的原因,因為js運行在瀏覽器,當(dāng)js運行的環(huán)境url和請求的接口數(shù)據(jù)的url不同域,并且服務(wù)器沒有允許跨域請求時,瀏覽器就會認(rèn)為這個請求是不安全的,就會限制請求。

理解了跨域限制是瀏覽器行為,不是服務(wù)器行為的原理后,就很容易解決跨域問題了。有兩種方法:
1、 服務(wù)器端后臺代碼進行特殊設(shè)置,允許客戶端進行跨域請求

  • java
private void enableCORS(Request request, Response response) {
    response.header("Access-Control-Allow-Origin", "*");
}
  • golang
func EnableCORSAndCredit(w *http.ResponseWriter, req http.Request) {
    (*w).Header().Set("Access-Control-Allow-Origin", req.Header.Get("Origin"))             //允許訪問所有域
    (*w).Header().Add("Access-Control-Allow-Headers", "Content-Type") //header的類型
    (*w).Header().Add("Access-Control-Allow-Credentials", "true")
}

2、客戶端設(shè)置代理。利用服務(wù)器之間沒有跨域的原理,通過本地起的服務(wù)當(dāng)做代理服務(wù)器,與我們需要真正請求的服務(wù)器做中間數(shù)據(jù)的傳輸。

  • 本地開發(fā)利用caddy做代理服務(wù)器避免跨域請求

首先安裝caddy

# mac
brew install caddy

編寫caddy代理配置文件

# Caddy 服務(wù)器運行的主機、端口
localhost:3002
# 假定react開發(fā)服務(wù)器運行在 localhost:3000 端口
proxy / http://localhost:3000
proxy /sockjs-node localhost:3000 {
  websocket
}
proxy /api https://server

啟動caddy

$ caddy --conf ./caddyfile

隨后我們就可以在 localhost:3002 訪問 React.js 頁面 - 注意不是 localhost:3000。caddy 會將 / 請求轉(zhuǎn)發(fā)到 3000 端口,而 /api 請求則轉(zhuǎn)發(fā)到 https://server,一樣解決跨域問題。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 什么是跨域 跨域,是指瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對JavaScript實...
    Yaoxue9閱讀 1,414評論 0 6
  • 前言部分 一、跨域是什么? 跨域是指一個域下的文檔或腳本試圖去請求另一個域下的資源(廣義的)。 廣義的跨域場景有以...
    爆發(fā)吧小宇宙閱讀 3,390評論 0 12
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 28,867評論 1 45
  • 視頻參考:ajax跨域完全講解 本文精華版:【綜合】ajax跨域問題 什么是跨域問題 簡單來講,當(dāng)前臺調(diào)用后臺,如...
    一顆語法糖閱讀 1,142評論 2 8
  • 1、找出目標(biāo)、動機聚焦目標(biāo)——目標(biāo)實現(xiàn) 2、夢想,與自己溝通,你的夢想是什么聚焦夢想-夢想實現(xiàn) 3、放棄合理化自己...
    英子2017閱讀 136評論 0 0

友情鏈接更多精彩內(nèi)容