#google-chrome #asp.net-core #http-headers
#google-chrome #asp.net-core #http-заголовки
Вопрос:
У меня есть простая конечная точка ядра asp net, которая возвращает файл электронной почты:
[HttpGet("files/{id:int}")]
public async Task<IActionResult> GetFileAsync(int id)
{
...
var fileName = $"{id}.msg";
var filePath = ...;
System.Net.Mime.ContentDisposition cd = new System.Net.Mime.ContentDisposition
{
FileName = fileName,
Inline = true,
};
Response.Headers.Add("Content-Disposition", cd.ToString());
return PhysicalFile(filePath, MimeTypes.GetMimeType(filePath));
}
Я хочу, чтобы браузер пытался открыть файл, и он работает в Firefox. Но Chrome загружает файл только даже с inline
Content-Disposition
:
Content-Disposition: inline; filename=10979.msg
Content-Length: 112128
Content-Type: application/octet-stream
Server: Microsoft-IIS/8.5
Как это исправить?
Комментарии:
1. Могу ли я сделать «files /../ .. / .. / ../ passwd»? работает ли это?
2. Возможно, /../../../../././..
Ответ №1:
Как это исправить?
Firefox помогает пользователю открыть файл с помощью диалогового окна, но Edge и Chrome этого не делают. Но вы можете выбрать опцию «Всегда открывать файлы этого типа», как показано ниже, чтобы автоматически открывать файлы.
Работа в браузерах Firefox, Edge и Chrome
Как отменить «всегда открывать файлы этого типа»?
- Chrome
- Edge
Ответ №2:
Измените Content-Type
на application/msg