(aurelia)アプリケーションのアップロードフォルダを開くdotnet core API(IIS8上)を設定しました。このようなフォルダへのアクセスを開けましたDotnet core:ブラウザ経由で画像への直接アクセスをブロックする最善の方法は何ですか?
app.UseFileServer(new FileServerOptions()
{
FileProvider = new PhysicalFileProvider(Configuration["ApiSettings:UploadsFolder"]),
RequestPath = new PathString("/uploads/"),
EnableDirectoryBrowsing = true
});
これは、アプリケーションがアップロードした画像をURLで開くことができるため、正常に動作します。今、URLがブラウザに直接入力されたときに、それらの画像へのアクセスをブロックしたいと思います。私はC#ソリューションを見たことがありますが、ドットネットのコアソリューションは見つけられませんでした。
私はミドルウェアを使用して、APIに送信されるリクエストを傍受しています。しかし、特定の画像要求をブラウザ経由で傍受してブロックすることはできませんでした。画像にアクセスできるのは、固定ドメイン上の私のaureliaアプリケーションだけです。
public async Task Invoke(HttpContext context)
{
StringValues referer;
context.Request.Headers.TryGetValue("Referer", out referer);
// Referer will contain the full URL of the image when requested
// via the browser. When its requested differently it will contain
// the url of the requesting application
if (referer.Any() && referer.First().Contains("/uploads/"))
{
context.Response.StatusCode = 401;
return;
}
await _next.Invoke(context);
}
画像への直接アクセスをブロックして特定のアプリケーションに画像を読み込ませることが最も良い方法を教えてもらえますか?
返信いただきありがとうございます!だから '静的ファイルを削除している間'あなたは 'UseFileServer'を削除すると言っていますか?しかし、アップロードフォルダはもはやAPIで利用できなくなります。 ブラウザから直接URLを呼び出すとき(if local)、if文にヒットし、401を返しますが、ブラウザにはまだ画像が表示されます。 –
いいえ、サーバー(またはローカルの場合はdev)のIIS(inetmgr)にアクセスし、Webサイトにアクセスして「モジュール」を選択し、「StaticFileModule」を削除します。すべてはGUIを介して。 –
申し訳ありませんが、私はそれを行うことはできますが、ローカルで(dotnet cli経由で)ミドルウェアにヒットしますが、まだリクエストをブロックできません。それがどんなアイデアなのか? –