KaranЕсли есть blob URL типа blob:https://example.org/12345678-1234-5678-9876-543212345678, то его можно использовать в ajax запросе и получить данные, надо только все делать из контекста страницы.
Да, этот всё более массово распространяющийся случай, когда какие-либо параметры в присылаемом серверами исходном коде страницы завернуты в нечитаемую форму с блоб-идентификатором.
На пробу, в целях обеспечения нужного контекста, использовал следующий код для проверки якобы существующей возможности чтения блоб данных через запрос:
var head=wnd.document.getElementsByTagName('head')[0]||wnd.document.documentElement;//Определяем элемент, куда будем вставлять элемент 'script'
var script1=wnd.document.createElement('SCRIPT');//определяем элемент 'script'
script1.innerHTML="\
alert('Probe: '+window.location.href);\
var xhr = new XMLHttpRequest();\
xhr.responseType = 'blob';\
xhr.open('GET', document.getElementsByTagName('video')[0].src);\
xhr.onload = function() {\
var recoveredBlob = xhr.response;\
var reader = new FileReader;\
reader.onload = function() {\
var blobAsDataUrl = reader.result;\
alert('blobAsDataUrl='+blobAsDataUrl);\
};\
reader.readAsDataURL(recoveredBlob);\
};\
xhr.send();\
";
script1.type="text/javascript";//определяем элемент 'script'
head.insertBefore(script1,head.firstChild);//Вставляем элемент 'script' в тело страницы и браузер его исполняет
Ну и в результате в консоли имеем NetworkError: A network error occurred. и запрос не производится. То ли не понимает протокола "blob:", то ли из-за кроссдоменных ограничений безопасности: другой протокол = другой домен, но тогда бы ругалось типа "security restriction", так что скорее первое. Хотя вариант со вставкой скрипта в тело страницы куда уж контекстнее?
А если выкинуть "blob:" из адреса, заменив xhr.open('GET', document.getElementsByTagName('video')[0].src);\ на
xhr.open('GET', document.getElementsByTagName('video')[0].src.replace('blob:',''));\
Тогда запрос нормально едет, но не в блоб, а на адрес
http://site.com/blob-иден-ти-фи-ка-тор
И приезжает, что там обычно сайты по таким адресам отдают - код страницы 404 и т.п. (тут в алерте этот код страницы оказывается кодирован в base64)
Ну полезность их явно недостаточна, так что есть другой вариант - что подобные "ответы" могут разбрасываться для создания ложной видимости, что blob-данные являются доступными к просмотру того, что там в них с интернета на компьютер прилетает.