Запрос GET /posts/ завершился ошибкой plain HTTP

Похоже, эта ошибка не была зафиксирована при посещении страницы /posts, браузер отображает пример по адресу Discourse Meta


В то время как всегда должно отображаться приложение с ошибкой, как при посещении https://meta.discourse.org/posts1

1 лайк

У меня открывается страница ошибки, когда я перехожу по вашей первой ссылке. Это происходит в конкретном браузере?

Проверил ссылку в режиме инкогнито Chrome, Firefox и Safari.

Когда я нажимаю на ссылку, у меня тоже появляется страница «Упс!». Но если я обновлю эту страницу или введу URL в новую вкладку, тогда она не работает.

Похоже, возвращается ошибка 406. Приложение Ember воспринимает её как 404, но при перезагрузке браузера сообщение об ошибке выглядит иначе.

В любом случае это ошибка, и в интерфейсе нет ссылок на этот URL, поэтому неясно, в чём именно заключается проблема.

Перепишите мой вопрос: почему при обращении к Discourse Meta как к несуществующей странице возвращается код 406 и пустая страница? Более уместными были бы код 404 и сообщение «Oops».

В панели Network инструментов разработчика Chrome я вижу ответ с кодом 406. Страницу «Oops» я вижу лишь изредка. Отображение страницы «Oops» было бы разумным.

Мой вопрос: независимо от типа ошибки, именно на приложении лежит ответственность за показ пользователю дружественного сообщения об ошибке (как это делает страница «Oops»), а не пустой страницы. Я предполагаю, что в случае ответа 406 само приложение даже не достигает цели. Это ошибка, сообщаемая службой, находящейся перед приложением, — например, веб-сервером или прокси-сервером.

Создало ли приложение ссылку, с которой у вас возникли проблемы?

Беглый взгляд на discourse/config/routes.rb at main · discourse/discourse · GitHub показывает, что это недействительный маршрут.

Если вы начинаете с недействительного маршрута, Rails не отправит вам всё приложение Ember, чтобы сообщить, что у вас неверный URL.

Похоже, я ошибался: https://meta.discourse.org/bananas загружает страницу «Ой». Вероятно, это потому, что /posts/:id/xxx является допустимым маршрутом.

Да. Именно так я и оказался на чистом URL /posts после удаления остальных параметров (но я забыл, где именно я видел страницу /posts/:id/xxx). Я считал, что /posts — это допустимый маршрут для всех постов пользователя. Возможно, это крайний случай, который Discourse не обрабатывает.

1 лайк

Я ожидал, что /posts вернёт все посты, но возвращать все посты в системе довольно бесполезно. Вы можете найти свои посты по адресу https://meta.discourse.org/my/activity.

1 лайк

В какой-то степени согласен. Возвращение пустой страницы через /posts — это ошибка в Discourse? Мне просто интересно, должно ли это быть так, но я не настаиваю на том, что эту проблему обязательно нужно исправить. Возможно, это стоит обсудить команде Discourse. :slight_smile:

Помечаем это как pr-welcome, хотя это валидно, но имеет очень низкий приоритет.

5 лайков