私はAPIを持っていますが、現在はそのエンドポイントの1つを消費しようとしています。エンドポイントは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:ラpolíticaデMISMO原産地 IMP (ACCESS CONTROLLER-ACCY-ORIGINAL)」を参照してください。
英語:CORSヘッダーが存在しないため、基本的にサーバーは要求を拒否しています。
ルータの設定で何が間違っていますか?
を受け入れるしたいとしましょうとあなたの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を追加するだけで、追加する必要は全くありません。そのため、ブラウザがプリフライトオプションを実行するようになります。また、他の質問のコメントでも言及されているように、問題は、リクエストを送信している任意のURLにOPTIONS要求のための403でサーバーが応答していることです。したがって、そのルートへのOPTIONSリクエストの認証を要求しないようにバックエンドを設定する必要があります – sideshowbarker