Я хочу показать файл PDF внутри iframe, но этот файл защищен unded токеном JWT, поэтому я построил iframe со следующим кодом:
const MyFrame = ({ token, src, type, ...otherProps }) => {
const [blobObject, setBlobObject] = useState(null);
const method = 'GET';
const authorization = `Bearer ${token}`;
const headers = new Headers({ authorization, type });
const options = { method, headers };
useEffect(() => {
fetch(src, options)
.then(response => response.blob())
.then(response => {
var blob = new Blob([response], { type });
const obj = URL.createObjectURL(blob);
setBlobObject(obj);
});
}, []);
return <iframe src={blobObject} {...otherProps} />;
};
Использование:
<MyFrame src="..." token={myToken} type="application/pdf" />
Хотя это работает, при просмотре файла PDF возникает определенная проблема.Если я нажму на любую из ссылок внутри PDF, новая страница будет загружена не во фрейм, а на главную страницу.
Можно ли как-нибудь открыть эти ссылки в новой вкладке?
ПРИМЕЧАНИЕ: Что-то, чего я не знаю, если это важно, но, возможно, стоит упомянуть, в консоли я получаю следующее предупреждение:
Resourceинтерпретируется как документ, но передается с приложением MIME-типа / pdf: "blob: http://localhost:3000/43452329-a89f-4e95-a9d7-1a68df2213be".