はじめに
ASP/NET CoreでAPI開発の勉強をしていたら、net::ERR_FAILED 307
エラーが出て上手くいかなかったので、解決方法を備忘録代わりに記載します。
やったことと起きたこと
.NET CoreでAPI開発をしていて、コンテナ化するためにリクエストURLをhttp://*:5000
にしたかったのでUseUrls(http://*:5000)
を使用してURLの指定を行いました。フロントからAPIをたたくと、画像のようにCORSのエラーが出てしまい、APIをたたけない状態になってしまいました、、、
調べてみた
私がこの問題に直面した際の状況は以下の通りです。
- バックエンド側では下記のコードでCORSの設定を記載済み
services.AddCors(options =>
{
options.AddPolicy(name: "myAllowCrossOrigin", policy =>
{
policy.AllowAnyOrigin();
policy.AllowAnyHeader();
policy.AllowAnyMethod();
});
});
/* Configure()内 */
app.UseCors("myAllowCrossOrigin");
-
UseUrls()
を使用する前はCORSエラーが出ずにレスポンスが返ってきていた
エラーを出したリクエストを見てみると、https://localhost:5001
にリダイレクトしているようでした。
解決方法
この問題は、StartUp.cs内からapp.UseHttpsRedirection();
を削除することで解決しました!
公式によると、このメソッドにより、HTTPからのリクエストを拒否するそうです、、
今回はローカルでの個人的な開発だったのでhttpで行っていたのですが、盲点でした、、
API プロジェクトでは、UseHttpsRedirection を使用して HTTPS に要求をリダイレクトするのではなく、HTTP 要求を拒否できます。
さいごに
まだまだ.NET初心者なので、わからない点がたくさんありました、、
エラーログは細かく見るべきだと学びました。