Мне удалось реализовать встроенный веб-сервер с помощью микроконтроллера Renesas Synergy S7.Код сервера написан на C, и я использовал стек Synergy TCP - Netx Duo и Net Secure (для TLS).Целью проекта является передача файлов с ПК с помощью браузера на S7, и S7 сохраняет эти файлы на SD-карте.Мне удалось сделать это успешно с Chrome и края с HTTP.Я преобразовал в HTTPS, используя Net TLS стек.Я могу отображать свои веб-страницы, но передача файлов не работает на Chrome.Это будет работать на грани, но размер блока ограничен примерно 250 байтами.С помощью HTTP я могу передавать 1024 байта на чанк для обоих браузеров.Во всяком случае, моя главная задача - заставить эту штуку работать с Chrome, но если бы вы могли также предоставить мне решение по увеличению размера чанков для Edge, это было бы очень полезно.
Я посмотрел на CORS, ноЯ думаю, что это не имеет никакого отношения к этому, потому что все это одного происхождения.Кроме того, браузер не отправляет заголовки, которые его инициируют.
// Это код, который я использую для передачи файлов.oBlob содержит блок // Вот пример oBlob
var fd = new FormData();
oBlob = new Blob(["```", fileName, "$", size, "$", x, "$", partFile, "***", crc16, "$"]);
fd.append("my-file", oBlob);
xhr.open("POST", "/Upload/", true);
xhr.responseType = 'text';
xhr.send(fd);
// Ниже приведен код javascript, который обрабатывает ответ от S7.
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
var response = xhr.responseText;
console.log(response);
if(x < numLoops && response === "OK\0" && sendFlag === 1)
{
PartitionFile();
}
else if(response === "RESEND\0" && sendFlag === 1)
{
ResendFile();
}
else
{
SelectFile();
}
}
};//end xhr.onreadystatechange
Я отправил текстфайл с буквами, и это то, что я получаю из Chrome: содержимое текстового файла не отправляются.Также я вижу ошибку в коде javascript прямо на xhr.send (fd), когда при наведении курсора на отметку x при проверке исходного кода.Ошибка: не удалось загрузить ресурс: net :: ERR_EMPTY_RESPONSE
=====================================================
Message from client...
POST /Upload/ HTTP/1.1
Host: 1.2.3.4
Connection: keep-alive
Content-Length: 268
Origin: https://1.2.3.4
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryA8KHeWAlLzwyGQQL
Accept: */*
Referer: https://1.2.3.4/File_Transfer.html?File+Transfer=File+Transfer
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Number of bytes received = 494
=====================================================
=====================================================
Ниже указано, что я получаю от Edge (Как вы можете видеть, текстовый файл был отправлен, и я получил бы то же самое, используя Chrome, когдаиспользуя HTTP.)
=====================================================
Message from client...
POST /Upload/ HTTP/1.1
Origin: https://1.2.3.4
Referer: https://1.2.3.4/File_Transfer.html? File+Transfer=File+Transfer
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134
Content-Type: multipart/form-data; boundary=---------------------------7e33012f20668
Accept: */*
Accept-Language: en-US
Accept-Encoding: gzip, deflate, br
Host: 1.2.3.4
Content-Length: 272
Connection: Keep-Alive
Cache-Control: no-cache
-----------------------------7e33012f20668
Content-Disposition: form-data; name="my-file"; filename="blob"
Content-Type: application/octet-stream
```TestFile.txt$43$1$AAAAAAAAAABBBBBBBBBBCCCCCCCCCCDDDDDDDDDDEEE***16322$
-----------------------------7e33012f20668--
Number of bytes received = 798
=====================================================
Если вы сравните oBlob с выводом текстового файла, вы увидите, как формируется пакет.
Похоже, что Chrome блокирует содержимое файла изотправляется при использовании SSL / TLS.Я также попытался извлечь вместо xhr и все тот же результат.Пожалуйста, помогите мне разобраться.
Спасибо.Jay