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

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

CORS 預(yù)檢神秘地因大猩猩/處理程序而失敗

CORS 預(yù)檢神秘地因大猩猩/處理程序而失敗

Go
翻翻過去那場雪 2022-10-17 09:53:42
我正在通過 Heroku 為我的應(yīng)用程序發(fā)布一個 Golang API。無法讓我的 webapp(Flutter/Dart 堆棧)真正從我的 api 獲得成功的響應(yīng)。但是,我可以使用本地的 curl 命令獲得成功的響應(yīng)。我已經(jīng)閱讀了幾篇關(guān)于更改 Go mux 服務(wù)器和添加正確標(biāo)頭的文章,但這對我不起作用。我什至看到在我的 curl 請求期間返回了這些標(biāo)頭。真的可以使用一些幫助,因?yàn)檫@會減慢我的速度。本質(zhì)上這是我創(chuàng)建服務(wù)器的主要課程import (    "api/preventative_care"    "api/user"    "github.com/gorilla/handlers"    "github.com/gorilla/mux"    "log"    "net/http"    "os")func main() {    log.SetFlags(log.LstdFlags | log.Llongfile)    router := mux.NewRouter()    // Where ORIGIN_ALLOWED is like `scheme://dns[:port]`, or `*` (insecure)    headersOk := handlers.AllowedHeaders([]string{"*"})    methodsOk := handlers.AllowedMethods([]string{"GET", "HEAD", "POST", "PUT", "OPTIONS"})    originsOk := handlers.AllowedOrigins([]string{"*"})    router.HandleFunc("/", func(writer http.ResponseWriter, request *http.Request) {        log.Println("Up and running!")    })    router.HandleFunc("/api/login", user.LoginHandler).Methods("GET")    router.HandleFunc("/api/recommendations", preventative_care.RecommendationHandler).Methods("GET")    var port = os.Getenv("PORT")    log.Printf("Starting application on port %s\n", port)    //log.Fatal(http.ListenAndServe(fmt.Sprintf(":%s", port), router))    log.Fatal(http.ListenAndServe(":" + os.Getenv("PORT"), handlers.CORS(originsOk, headersOk, methodsOk)(router)))}調(diào)用此 API 的 dart 代碼如下所示:    Map<String, String> headers = {      "content-type": "application/json",      "username": username,      "password": password    };    final response = await http.get(Uri.parse(uri), headers: headers);我以為我應(yīng)該看到Access-Control-Allow-Origin: *那里添加了 Header ,但還沒有我仍然獲得 200 成功。但是,當(dāng)我嘗試使用我的 Webapp 從使用 Google Chrome 的登錄屏幕點(diǎn)擊 API 時,我看到了這個錯誤:從源“https://my-app-staging.herokuapp.com”訪問“https://my-app-api.herokuapp.com/api/login”處的 XMLHttpRequest 已被 CORS 策略阻止:對預(yù)檢的響應(yīng)請求未通過訪問控制檢查:請求的資源上不存在“Access-Control-Allow-Origin”標(biāo)頭。不知道 - 好像標(biāo)題正在被 Chrome 或其他東西刪除?
查看完整描述

1 回答

?
www說

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個贊

gorilla/handlers不(還沒有?)支持Access-Control-Allow-Headers. 您必須明確指定所有允許的標(biāo)頭。在你的情況下,而不是

handlers.AllowedHeaders([]string{"*"})

你應(yīng)該有

handlers.AllowedHeaders([]string{"content-type", "username", "password"})

更多細(xì)節(jié)

早在 2016 年,Fetch 標(biāo)準(zhǔn)Access-Control-Allow-Headers就增加了對標(biāo)頭中通配符的支持(在非憑據(jù)請求的情況下)。大多數(shù)現(xiàn)代瀏覽器現(xiàn)在都支持此功能

然而,gorilla/handlers似乎還沒有趕上規(guī)范。如果您檢查functionmethod的源代碼handlers.AllowedHeaders*cors.ServeHTTP您會發(fā)現(xiàn)沒有對"*"值進(jìn)行特殊處理:它是按字面意思處理的。結(jié)果,CORS 中間件檢測到您的預(yù)檢請求(content-type、、usernamepassword)提供的請求標(biāo)頭與您允許的標(biāo)頭(*字面意思)之間的不匹配,并以 a 響應(yīng),403甚至沒有設(shè)置Access-Control-Allow-Origin標(biāo)頭,從而導(dǎo)致訪問控制檢查失敗。


查看完整回答
反對 回復(fù) 2022-10-17
  • 1 回答
  • 0 關(guān)注
  • 102 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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