Могу ли я изменить HTML-код состояния страницы на стороне клиента?

У меня есть статическая веб-страница HTML, и я хочу установить для нее код состояния 404 "Не найдено".

Но я хочу сделать это, используя javascript или jQuery, а не какой-либо серверный язык.

Как это сделать на клиенте? С javascript или, может быть, с тегом <meta>?


person Community    schedule 22.12.2010    source источник
comment
Какова цель этого? Я ненавижу 404, поэтому, когда страница доступна, радуйтесь!   -  person Marcel Korpel    schedule 22.12.2010
comment
я пытаюсь сделать это в javascript, потому что это интересно и даже больше, когда ограничение установлено только на javascript   -  person    schedule 22.12.2010
comment
Это не интересно, это бессмысленно. 404 означает, что то, что вы запросили через HTTP, не существует. Это имеет смысл только как часть заголовка ответа HTTP.   -  person Quentin    schedule 22.12.2010
comment
Я могу представить, что на одностраничном сайте, имеющем дело с REST-ситуацией, которая не поддерживается, вы хотели бы сделать что-то вроде установки 404 и ожидать, что браузер будет обрабатывать поведение 404 по умолчанию. Тем не менее, я должен согласиться с Марселем, что вы можете справиться с ситуацией, потому что вы можете показать пользовательскую (сгенерированную клиентом javascript) страницу 404, помогая вашим пользователям вернуться к правильному потоку вашего сайта.   -  person Jos    schedule 10.12.2013


Ответы (5)


Невозможно установить код ответа HTTP с помощью программирования на стороне клиента.

person Quentin    schedule 22.12.2010

Я думаю, что смысл этого упражнения следующий: вы хотите загрузить страницу, которая отображает пользовательское сообщение об ошибке для ваших пользователей. В то же время вы хотите сообщить Google Search Appliance (или аналогичным системам), что запрошенная страница должна быть удалена из индекса. У меня такая же проблема, когда серверные скрипты не могут быть встроены. Я еще не нашел решения на стороне клиента.

person Community    schedule 03.01.2012
comment
Вместо этого используйте это: <meta name="robots" content="noindex" /> - person Tharkon; 03.12.2014

Вы можете перенаправить страницу на несуществующую страницу в JavaScript. Я понятия не имею, почему вы хотели бы это сделать, но эй, хо:

<script type="text/javascript">
<!--
window.location = "zomgomgthispagedoesntexistlololol.html"
//-->
</script>

Но Дэвид прав, нет никакого способа установить статус ЭТОЙ страницы, так как это скрипт на стороне клиента.

person Tom Gullen    schedule 22.12.2010

Вы устанавливаете перенаправление для несуществующих страниц на сервере. У вас не будет страницы для работы в браузере, так как запрошенная пользователем страница не существует.

В ASP.NET вы можете настроить страницу по умолчанию в разделе customErrors файла web.config следующим образом:

<customErrors mode="RemoteOnly" defaultRedirect="~/error.aspx">
  <error statusCode="404" redirect="notFound.aspx"/>
  <error statusCode="403" redirect="accessError.aspx"/>

person Chris Love    schedule 22.12.2010

В настоящее время я столкнулся с проблемой. Я знал, что это невозможно, но решил, что все равно посмотрю. Причина, по которой я сталкиваюсь с этим, связана с vue-router и ограничениями, которые он имеет в режиме истории. Они предлагают настроить конфигурацию на стороне сервера, которая перехватывает все URL-адреса, которые могут быть маршрутизированы на стороне клиента, и возвращает root/index.html для маршрутизации на стороне клиента. А затем еще одна универсальная клиентская сторона, если маршрута там не существует. Чего они не могут объяснить, так это того, как вы можете сообщить о такой ошибке сканерам/индексаторам с реальным кодом состояния. С помощью этого решения вы просто получаете 200 секунд, направляемых любым запрашивающим сторонам, даже если страница не найдена.

https://router.vuejs.org/en/essentials/history-mode.html

person benmccallum    schedule 07.12.2017