我有一個API,目前正在嘗試使用它的一個端點。端點用於POST請求,端點按預期工作。該API運行在雲端,我用curl
進行了測試,它非常完美,然後從我的反應應用程序中嘗試使用它,但是得到了403 status code
。在Gorilla Mux中配置CORS:在POST請求中出現403錯誤
在瀏覽器的控制檯中觀察我發現我在OPTIONS請求中出現該錯誤,並且POST從未完成。下面是在控制檯中顯示的結果的截圖:
於是,我做了一個簡單的HTML文件,表格,還有我把所需的投入和行動指向這個端點和它的工作很不錯。那麼,我不知道錯誤在哪裏?我已在API
在API中,我使用大猩猩/多路複用器中啓用了CORS和我有這樣的事情:
// Set up a router and some routes
r := mux.NewRouter()
r.HandleFunc("/", handleHome)
//some other routes
headersOk := handlers.AllowedHeaders([]string{"*"})
originsOk := handlers.AllowedOrigins([]string{"*"})
methodsOk := handlers.AllowedMethods([]string{"GET", "HEAD", "POST", "PUT", "OPTIONS"})
// Start http server
port := fmt.Sprintf(":%d", SomePort)
http.ListenAndServe(port, handlers.CORS(originsOk, headersOk, methodsOk)(r))
使用:
"github.com/gorilla/mux"
"github.com/gorilla/handlers"
,我在我得到的消息瀏覽器(西班牙文):
Solicitud desde OTRO奧利bloqueada:LApolítica德MISMO奧利 小鬼ide eler recurso remoto en https://miURL(razón:falta la cabecera CORS'Access-Control-Allow-Origin')。
英文:基本上服務器拒絕請求,因爲CORS頭不存在。
那麼,我的路由器配置有什麼問題?
這有什麼好做reactjs但阿賈克斯和一般你的api。你要發送什麼請求標題?如果您發送除https://fetch.spec.whatwg.org/#cors-safelisted-request-header中列出的標題之外的任何標題,則會導致它預先填充請求,並且您的api將在OPTIONS請求上發送403。檢查你的API。 – cowbert
@cowbert正確!那是唯一被髮送的頭文件 –
正如在https://stackoverflow.com/questions/45967591/config-cors-in-gorilla-mux中的註釋中指出的那樣,它似乎是您的請求添加了「osn」請求頭文件隨着添加一個Access-Control-Allow-Origin,它絕對不需要添加 - 這就是觸發瀏覽器執行預檢選項的原因。正如在另一個問題的評論中也提到的那樣,問題在於你的服務器以403的OPTIONS請求來響應你發送請求的任何URL。因此,您需要將後端配置爲不要求對該路線的OPTIONS請求進行身份驗證 – sideshowbarker