我可以在客户端更改页面的 HTML 状态代码吗?

Posted

技术标签:

【中文标题】我可以在客户端更改页面的 HTML 状态代码吗?【英文标题】:Can I change the page's HTML status code on the client side? 【发布时间】:2011-05-29 09:04:24 【问题描述】:

我有一个静态 html 网页,我想将其状态代码设置为 404“未找到”。

但是,我想使用 javascript 或 jQuery,而不是任何服务器端语言来做到这一点。

如何在客户端上执行此操作?使用 javascript 或 <meta> 标签?

【问题讨论】:

这样做的目的是什么?我讨厌 404,所以当页面可用时,高兴! 我尝试在 javascript 中执行此操作,因为当限制设置为 javascript only 时,它很有趣,而且更多 这没什么意思,很荒谬。 404 表示“您通过 HTTP 请求的内容不存在”。它仅作为 HTTP 响应标头的一部分才有意义。 我可以想象在一个单页站点上,处理不受支持的 REST 情况,您想要执行设置 404 之类的操作,并期望浏览器处理默认的 404 行为。尽管如此,我必须同意 Marcel 的观点,即您可以处理这种情况,因为您可以显示自定义(客户端 javascript 生成)404 页面,帮助您的用户返回到您网站的正确流程。 【参考方案1】:

无法使用客户端编程设置 HTTP 响应代码。

【讨论】:

【参考方案2】:

您可以将页面重定向到 JavaScript 中不存在的页面。我不知道你为什么要这样做,但是嘿嘿:

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

但大卫是对的,因为它是客户端脚本,所以无法设置页面状态。

【讨论】:

【参考方案3】:

我认为这个练习背后的意义如下:您想要加载一个向您的用户显示自定义错误消息的页面。同时,您想告诉您的 Google Search Appliance(或类似系统)必须从索引中删除所请求的页面。 我有同样的问题,无法嵌入服务器端脚本。我还没有找到客户端解决方案。

【讨论】:

改用这个:&lt;meta name="robots" content="noindex" /&gt;【参考方案4】:

您为服务器上不存在的页面设置了重定向。由于用户请求的页面不存在,因此您将无法在浏览器中使用页面。

在 ASP.NET 中,您可以在 web.config 文件的 customErrors 部分中设置默认页面,如下所示:

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

【讨论】:

以上是关于我可以在客户端更改页面的 HTML 状态代码吗?的主要内容,如果未能解决你的问题,请参考以下文章

javascript 从另一个页面更改元素

如果文件是 jpg,则唯一地更改样式

有啥方法可以判断哪个状态更改导致在 SwiftUI 中重建视图?

如何使用 Vue-router 更改状态码?

UIWebView 从加载的页面获取 http 状态码

İ 可以使用 JavaScript 更改我在托管中的文件吗?