第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

盡管為 Nginx、angular-http-server 和 Golang 啟用了

盡管為 Nginx、angular-http-server 和 Golang 啟用了

Go
qq_遁去的一_1 2023-06-12 16:40:11
我已經(jīng)在開(kāi)發(fā)中成功啟用了 CORS。我的 Golang 后端與本地計(jì)算機(jī)上的 Angular 前端通信良好。但是,我不知道如何在生產(chǎn)環(huán)境中啟用 CORS(DigitalOcean 上的 Ubuntu)。我在 Firefox 上得到這個(gè):“跨源請(qǐng)求被阻止:同源策略不允許讀取位于http://localhost:12345/anteroom 的遠(yuǎn)程資源。(原因:CORS 請(qǐng)求未成功)?!蔽艺谑褂?systemd 單元運(yùn)行 Golang 后端,并在 localhost:12345 提供服務(wù)。我使用 PM2 和 angular-http-server 將 Angular 前端作為構(gòu)建(使用--prod標(biāo)志構(gòu)建)運(yùn)行,并通過(guò)端口 8080 提供服務(wù)。此端口位于防火墻后面。我使用 Nginx 來(lái)處理這個(gè)前端的 HTTPS 流量。它在端口 80 上偵聽(tīng)并proxy_pass在端口 8080 上將 ( ) 請(qǐng)求傳遞給它。登陸頁(yè)面(只需要一個(gè) GET 請(qǐng)求)在瀏覽器中加載正常,所以這個(gè)設(shè)置似乎是可行的。我正在使用的版本:Ubuntu 16.04、PM2 3.3.1、Angular CLI 7.3.4、angular-http-server 1.8.1。當(dāng)前端嘗試將 JSON 數(shù)據(jù) POST 到后端(localhost:12345/anteroom,如上面的消息所示)時(shí),就會(huì)出現(xiàn)問(wèn)題。我讀過(guò) CORS 是服務(wù)器端問(wèn)題。因此,我嘗試在有服務(wù)器的任何地方啟用它,即在后端、Nginx 和 angular-http-server 中啟用它。它在我的 Golang 代碼中啟用:func anteroom(res http.ResponseWriter, req *http.Request) {    res.Header().Set("Access-Control-Allow-Origin", "*")    res.Header().Set("Access-Control-Allow-Methods", "POST, OPTIONS")    res.Header().Set("Access-Control-Allow-Headers", "Content-Type")    res.Header().Set("Content-Type", "application/json")...}func main() {    ...    # Using Gorilla mux router.    router := mux.NewRouter()    router.HandleFunc("/anteroom", anteroom).Methods("POST", "OPTIONS")}這成功地在開(kāi)發(fā)中啟用了 CORS,其中服務(wù) Golang 只是打開(kāi)其構(gòu)建的二進(jìn)制文件,而 Angular 使用ng serve.以上在生產(chǎn)中是不夠的。所以,我嘗試使用 angular-http-server 啟用它。注意--cors最后的標(biāo)志:pm2 start $(which angular-http-server) --name app -- --path /PATH/TO/DIST -p 8080 --cors我還嘗試在與 Angular 前端構(gòu)建相關(guān)的 Nginx 文件中啟用它(改編自此處):location / {if ($request_method = 'OPTIONS') {        add_header 'Access-Control-Allow-Origin' '*';        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';        add_header 'Access-Control-Allow-Headers' 'Content-Type';        add_header 'Content-Type' 'application/json';        return 204;}}我查看了 PM2、angular-http-server、Nginx 和其他一些東西的文檔,但我不知道我遺漏了什么。讓我知道?謝謝。
查看完整描述

2 回答

?
尚方寶劍之說(shuō)

TA貢獻(xiàn)1788條經(jīng)驗(yàn) 獲得超4個(gè)贊

我使用 tcpdump 查看來(lái)回的標(biāo)頭。長(zhǎng)話短說(shuō),在某些時(shí)候它讓我意識(shí)到我將前端設(shè)置為與“本地主機(jī)”通信。顯然,這意味著使用前端的任何客戶端瀏覽器都將在其自己的本地計(jì)算機(jī)上查找它。

為了解決這個(gè)問(wèn)題,我為我的角度前端設(shè)置了單獨(dú)的應(yīng)用程序環(huán)境。這允許前端在暫存中與本地主機(jī)通信,在生產(chǎn)中與我的后端域通信。


查看完整回答
反對(duì) 回復(fù) 2023-06-12
?
Smart貓小萌

TA貢獻(xiàn)1911條經(jīng)驗(yàn) 獲得超7個(gè)贊

    func anteroom(res http.ResponseWriter, req *http.Request) {

    res.Header().Set("Access-Control-Allow-Origin", "*")

    res.Header().Set("Access-Control-Allow-Methods", "POST, OPTIONS")

    res.Header().Set("Access-Control-Allow-Headers", "Content-Type")

    res.Header().Set("Content-Type", "application/json")

...

}


func main() {

    ...

    # Using Gorilla mux router.

    router := mux.NewRouter()

    router.HandleFunc("/anteroom", anteroom).Methods("POST", "OPTIONS")

}

代碼中缺少 GET 方法。


將此行更改 res.Header().Set("Access-Control-Allow-Methods", "POST, OPTIONS")為res.Header().Set("Access-Control-Allow-Methods", "GET, POST, OPTIONS")


查看完整回答
反對(duì) 回復(fù) 2023-06-12
  • 2 回答
  • 0 關(guān)注
  • 168 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)