Знаю что многие здесь маются с этой проблемой а решение как ни странно так никто из саппорта и не дает. В общем потратив последние сутки на борьбу с этой проблемой я нашел решение. Сначала ковырялся через POSTMAN и в нем все было хорошо и радужно. Запрос уходил и приходил ответ. Когда же попытался конвертнуть в JS (XHR или Ajax) и засунуть это дело в tampermonkey начался гемморой. но решение найдено. Итак внимание
Шаг первый. Добираемся до тега img на искомой странице, в моем случае это так
Шаг второй преобразуем содержимое в base64.
Шаг третий получаем blob для отправки через форму на сервер.
Шаг четвертый отправляем собственно форму со всеми данными на сервер и наслаждаемся ответом.
Соответствующие функции ниже (код не идеален подправьте под себя, писал лишь бы уже добиться рабочего состояния).
Шаг первый. Добираемся до тега img на искомой странице, в моем случае это так
Код:
var imgsrc = document.querySelector('body > div.row > div.col.s12.m9 > form > div:nth-child(4) > div > img');
Код:
var base64 = getBase64Image(imgsrc);
Код:
var blob = dataURItoBlob(base64);
Код:
uploadData(blob);
Код:
function getBase64Image(img) {
var canvas = document.createElement("canvas");
canvas.width = img.width;
canvas.height = img.height;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0);
var dataURL = canvas.toDataURL("image/png");
return dataURL;
}
function dataURItoBlob(dataURI)
{
var byteString = atob(dataURI.split(',')[1]);
var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];
var ab = new ArrayBuffer(byteString.length);
var ia = new Uint8Array(ab);
for (var i = 0; i < byteString.length; i++)
{
ia[i] = byteString.charCodeAt(i);
}
var bb = new Blob([ab], { "type": mimeString });
return bb;
}
function uploadData(blob)
{
var form = new FormData();
form.append("method", "post");
form.append("file", blob);
form.append("filename", "captcha.png");
form.append("key", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
var request = new XMLHttpRequest();
request.onload = request.onerror = function() {
if (this.status == 200) {
console.log(request.responseText);
}
else {
console.log("error " + this.status);
}
};
request.open("POST", "http://127.0.0.3/in.php");
request.send(form);
}