Я отправляю запросы от NodeJ на старый сервер, который использует HTTP/0.9
. Ответ приходит и выдает ошибку: Parse Error
. Не удалось найти что-либо в документах по поддержке протокола HTTP. Я что-то делаю неправильно, или NodeJS не поддерживает HTTP/0.9
?Поддержка HTTP/0.9 в nodejs
1
A
ответ
2
Узел не поддерживает HTTP/0.9 не только потому, что он больше не используется, а потому, что реальные ответы HTTP/0.9 только состоят из данных ответа. Это означает, что нет строки состояния, указывающей HTTP-версию ответа, поэтому нет возможности дифференцировать ответ HTTP/0.9 от неправильного ответа HTTP/1.x или даже ответа HTTP/0.9, который начинается со строки «HTTP /1.1 200 OK \ r \ n ".
0
Способ взломать его, предполагая, что вы используете Linux, заключается в использовании дочернего процесса с завитком. Вот пример кода, применяемый к URL-адресу, указывающему на старый сервер Shoutcast .;
var URL = "http://streaming3.radiocat.net/;";
// This will fail because HTTP 0.9 is not supported by Node.
var http = require("http");
var url = require("url");
http.get(url.parse(URL), function (res) {
res.on("data", function(data) {
console.log(data);
});
});
// This will work
var cp = require('child_process');
var request = cp.spawn("curl", ["-L", URL], { stdio: ['pipe', 'pipe', process.stderr] });
request.stdout.on("data", function(data) {
console.log(data);
});
/* Detail of the http.get error:
events.js:182
throw er; // Unhandled 'error' event
^
Error: Parse Error
at Socket.socketOnData (_http_client.js:454:20)
at emitOne (events.js:115:13)
at Socket.emit (events.js:210:7)
at addChunk (_stream_readable.js:266:12)
at readableAddChunk (_stream_readable.js:253:11)
at Socket.Readable.push (_stream_readable.js:211:10)
at TCP.onread (net.js:585:20)
*/
Смежные вопросы
- 1. Поддержка транзакций в nodejs
- 2. Sails.js/Nodejs/Json поддержка emojis
- 3. Поддержка Windows Phone в Socket.IO (nodejs)
- 4. Освобождение и поддержка модулей для nodejs
- 5. Поддержка нескольких типов содержимого для nodejs XML <-> JSON
- 6. AngularJS поддержка на стороне сервера маршрутизации (NodeJS + экспрессируют)
- 7. Собственная поддержка ES6 в PhantomJS
- 8. ли серебро поддержка поддержка?
- 9. Nodejs: Kineticjs в nodejs
- 10. ActionBar (Поддержка) с фрагментом (поддержка)
- 11. Поддержка AWS SES для Сингапура
- 12. нужна поддержка и поддержка Android
- 13. Поддержка MySQL Views в Sequelize ORM
- 14. Поддержка cron в node.js App Engine
- 15. Nodejs легкого каркас
- 16. Поддержка zip64 в php?
- 17. Поддержка SNI в AFNetworking
- 18. Поддержка Retina в QML
- 19. Поддержка CPUID в C#
- 20. Поддержка макросов в F #
- 21. Поддержка IPv6 в Java2ME
- 22. Поддержка Иерархии в C#?
- 23. Поддержка XNA в WP8?
- 24. Поддержка Flash в Android
- 25. Поддержка PhoneGap в Aptana
- 26. Поддержка HyperQ в OpenCL
- 27. Поддержка Fastlane в Windows
- 28. Поддержка .aspx в SonarQube
- 29. Поддержка транзакций в MongoDB
- 30. поддержка прокси в VB.Net
Вы правы, нет версии протокола, только данные ответа. Есть ли способ взломать его? Не получить эту 'Parse Error'? TCP с использованием 'net' модуля? – notgiorgi
Вы можете использовать простой TCP-сокет напрямую, да. Просто убедитесь, что вы отправляете корректно отформатированный запрос HTTP/0.9. – mscdex
Любые ресурсы на этом? Я имею в виду, как сформировать правильный запрос HTTP/0.9. – notgiorgi