Установка window.location.href в приложении для реагирования на производство SPA дает неожиданные результаты - PullRequest
1 голос
/ 03 апреля 2019

У меня есть реакция 16.8.5 SPA, размещенная на сервере IIS 2016 в Windows Server 2016. В приложении пользователь может загрузить отчет CSV.Для этого window.location.href задается URL-адрес веб-API, который создает отчет.Например:

window.location.href = 'api/generatereport'

API возвращает ответ с типом содержимого text/csv.Это прекрасно работает в наших средах разработки и тестирования (файл загружается), но не работает в производственной среде.В производственной среде вместо возврата контента CSV из API возвращается HTML, который выглядит подозрительно как index.html.Обратите внимание, что я проверил журналы IIS, поэтому я знаю, что запрос никогда не заходит так далеко.Кажется, это проблема клиента.Также обратите внимание, что производственная среда использует https - другие используют http.

Есть мысли о том, что может измениться в производственной среде, из-за которой этот запрос будет перенаправлен так неправильно и только в одной среде?В основном я искал лучшее предположение или догадку.

Ответы [ 2 ]

1 голос
/ 04 апреля 2019
0 голосов
/ 03 апреля 2019

При установке местоположения для файла CSV попробуйте принудительно указать тип MIME как часть URL-адреса, чтобы React не предполагал, что он пытается загрузить другую страницу в рамках React.

т.е.:

const target: string = window.location.origin + "/api/generatereport";
window.location.href = "data:text/csv;charset=utf-8," + target;

Это приведет к открытию файла CSV в виде отдельного окна и заставит браузер запросить загрузку потока CSV в виде файла.

Примечание. При таком подходе ограничения размера файла .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...