The server returned a malformed response

По туториалу написал минимальный HTTP-сервер. Возвращаю из него JSON клиенту:

        private async void OnMessageRecieved(object sender, Socket client, string msg)
        {
            if (InvokeRequired)
            {
                Invoke((MethodInvoker)delegate { OnMessageRecieved(sender, client, msg); });
            }
            else
            {
               await Task.Run(() =>
                {
                    string[] strings = msg.Split('\n');
                    string[] req = strings[0].Split(' ');
                    if (req[0] == "GET")
                    {
                        string id = req[1];
                        if (id.StartsWith("/video/"))
                        {
                            id = id.Substring(7);
                            YouTubeApi api = new YouTubeApi();
                            YouTubeVideo video = api.GetVideo(new VideoId(id));
                            string j = video.SimplifiedInfo.Info.ToString(); //тут JSON
                            string t = "HTTP/1.1 200 OK\r\n" +
                                "Access-Control-Allow-Origin: *\r\n" +
                                $"Content-Length: {j.Length}\r\n" +
                                $"Content-Type: application/json\r\n\r\n{j}";
                            Server.SendMessage(client, t);
                        }
                    }
                });
                listBox1.Items.Add($"{client}: {msg}");
            }
        }

Если подключаться из браузера - работает. А Postman пишет: Parse Error: The server returned a malformed response
Что ему не нравится? :thinking:
В консоли такая ошибка:
Снимок экрана 2023-03-14 175127
Что значит Expected HTTP/?

Так а в ответе что? Может что-то лишнее в начале?

Ожидало

Похоже, это глюк Postmana

Я думал, это я где-то накосячил :grin:

Где? :thinking:

Там же итак в начале ответа HTTP/ написано

Ну просто полный текст ответа сервера где-то выводится же.

Так это ж как раз о случаях, когда странный сервер не прислал HTTP/...
Может быть для удобства юзеров постмана ему бы и стоило пытаться выводить нормально и такое, но вообще это неправильный сервер.

Но мой-то шлёт :man_shrugging: в первом посте это видно

Так а на самом-то деле что приходит?
Может до этого еще что-то лишнее попадает.


но это в браузере

Я так и не понял, почему он пишет The server returned a malformed response :thinking: Ответ же правильный :man_shrugging: Как узнать, что именно ему не нравится?

Посмотреть через Wireshark, Fiddler и т.п. что приходит.
Или хотя бы в браузере нажать про Raw (“источник”).

это где такое? :thinking:

image

Дорогие товарищи! Кажется, я нашёл, в чём проблема :thinking:
Вчера искал на ютубе другие видео про создание web-сервера и нашёл один очень упоротый видосик на русском :smiley: Там какой-то мужик писал сервер и тоже копипастил код из какого-то туториала. Он там сказал, что порт 80 используется для HTTP, а 443 для HTTPS.
И тут меня торкнуло попробовать сменить порт на 80. И действительно! Postman начал нормально принимать ответ :dizzy_face: Ошибка пропала.
У меня установлен WAMP server, настроенный на порт 5559. Проверил на нём. Postman работает.
А почему? В чём прикол с портами? Почему Postman не хочет принимать ответ от моего сервера, когда порт отличается от 80? :thinking:

Начал, но не совсем.
Вот есть метод генерации ответа:

        private static string GenerateResponse(int errorCode, string msg, string body)
        {
            string t = $"HTTP/1.1 {errorCode} {msg}\r\n";
            if (!string.IsNullOrEmpty(body))
            {
                t += "Content-Type: application/json\r\n" +
                    "Access-Control-Allow-Origin: *\r\n" +
                    $"Content-Length: {body.Length}\r\n\r\n{body}";
            }
            return t;
        }

Выдаёт ошибку: Parse Error: Expected HTTP/.
Если первую строчку заменить на вот так вот: string t = $"HTTP/1.1 {errorCode} {msg}\r\n\r\n"; - тогда ответ доходит, но заголовки становятся частью тела.
Чё за упоротый Postman? :dizzy_face: В каком формате от хочет ответ тогда? :thinking: