#javascript #google-chrome #google-chrome-extension #xmlhttprequest #media-source
Вопрос:
Как некоторые могли заметить, GMail CSP больше не позволяет воспроизводить аудио-или видеофайлы. Сначала это повлияло на браузеры Chromium, но даже firefox больше не позволяет этого. Поэтому я создал расширение Google Chrome для воспроизведения mp3 и wav (мой основной вариант использования). Кто-то попросил добавить воспроизведение видео, но я не могу обойти ограничения CSP.
Я пытался XMLHttpRequest's arrayBuffer
const request = new XMLHttpRequest();
request.open('GET', url, true);
request.responseType = 'arraybuffer';
...
request.onload = () => {
const { readyState, status, response } = request;
const videoHtml = location.appendChild(document.createElement("video"));
videoHtml.classList.add("videoPlayer");
const mediaSource = new MediaSource();
videoHtml.src = URL.createObjectURL(mediaSource);
mediaSource.addEventListener("sourceopen", (e) => {
URL.revokeObjectURL(videoHtml.src);
const sourceBuffer = mediaSource.addSourceBuffer("video/mp4");
console.log("appending Buffer to sourceBuffer");
sourceBuffer.addEventListener("updateend", (e) => {
if (!sourceBuffer.updating amp;amp; mediaSource.readyState === "open") mediaSource.endOfStream();
});
sourceBuffer.appendBuffer(response);
});
request.send();
Я тоже пытался XMLHttpRequest's blob
const request = new XMLHttpRequest();
request.open('GET', url, true);
request.responseType = 'blob';
...
request.onload = () => {
const { readyState, status, response } = request;
const videoHtml = location.appendChild(document.createElement("video"));
videoHtml.classList.add("videoPlayer");
videoHtml.src = URL.createObjectURL(response);
request.send();
Оба потерпели неудачу с Refused to load media from ...because it violates the following Content Security Policy directive: "media-src https://*.googlevideo.com/videoplayback/"
Как бы я мог обойти неправильный CSP GMail для воспроизведения видео?
Расширение Chrome — https://chrome.google.com/webstore/detail/gplayer/obdmmgdlafadeehmbmcmoggnaokehnaj
Ссылка на Github — https://github.com/TriStarGod/GPlayer