我想在我的Web服务中添加一个选项来处理不受支持的URL,我应该提到我正在使用Express。为了处理错误的网址(代码404),我尝试使用
app.use(app.router);
但是显然它已被弃用,我还可以使用其他什么解决方案?我看到了建议的解决方案,但我想先听听其他选择。
另外, 我的Web服务支持一些HTTP请求类型,例如GET和POST,如何正确响应不支持的请求类型?例如DELETE。
我想要的行为是在发生404错误的情况下,我将返回所有适当的响应消息。如果请求不受支持,也是如此。
例如:
response.status(404).json({success: false,msg: 'Invalid URL'});
Express中所有未处理请求的404处理程序通常如下所示:
app.use(function(req, res, next) {
res.status(404).sendFile(localPathToYour404Page);
});
您只需将此作为您注册的最后一条路由,如果没有其他路由处理该请求,它将被调用。
这还将捕获您不支持的方法,例如DELETE。如果要基于请求定制响应,则可以将所需的任何检测和定制代码放入上面的处理程序中。
例如,如果您要检测DELETE请求,则可以执行以下操作:
app.use(function(req, res, next) {
if (req.method === "DELETE") {
res.status(404).sendFile(localPathToYour404DeletePage);
} else {
res.status(404).sendFile(localPathToYour404Page);
}
});
或者,如果您的响应是JSON:
app.use(function(req, res, next) {
let obj = {success: false};
if (req.method === "DELETE") {
obj.msg = "DELETE method not supported";
} else {
obj.msg = "Invalid URL";
}
res.status(404).json(obj);
});
一些参考:
Express常见问题解答:如何处理404响应?
Express自定义错误页面
而且,在使用它时,您可能还应该放入Express错误处理程序:
// not that this has four arguments compared to regular middleware that
// has three arguments
app.use(function (err, req, res, next) {
console.error(err.stack)
res.status(500).send('Something broke!')
});
这使您可以处理任何中间件遇到错误并称为的情况next(err)
。
问题内容: 我正在尝试运行以下代码: 但发生以下错误: XMLHttpRequest无法加载file:///home/93579551515/Desktop/Angular/p1.html。跨源请求仅支持HTTP。 我不想在网络服务器上运行它。 问题答案: 您可以添加模板,如和你通过将它们内部的标签,如在文档中提到。 然后,将不再需要发出AJAX请求来获取它们。 请注意,这些元素必须出现 在后面
问题内容: 我正在使用以下代码提出AJAX请求: 但是从Google Chrome JavaScript控制台,我一直收到此错误: XMLHttpRequest无法加载文件:/// C:/xampp/htdocs/webname/resources/templates/signup.php。跨源请求仅受HTTP支持。 问题是 signup.php 文件托管在我的本地Web服务器上,这是所有网站的运
在我的项目中,我面临着一个非常奇怪的问题。它与使用spring反应式webclient bulider调用rest API有关。它在本地和prod上也可以正常工作,但在向同一个endpoint发出3或4个请求后,会异常地给出以下错误。“org.springframework.web.server.MethodNotAllowedException:405方法\u不允许“请求方法'T'不受支持”这是
本文向大家介绍node.js中的favicon.ico请求问题处理,包括了node.js中的favicon.ico请求问题处理的使用技巧和注意事项,需要的朋友参考一下 这样的代码在请求时会出现两条请求: 第一条时URL地址为用户输入的客户端请求的目标URL地址,"/"代表用户的目标url地址为web应用程序的根目录. 第二个目标URL地址问浏览器为页面在收藏夹中的显示图标.默认为favicon.i
多请求支持 控制台编辑器允许您编写相互层叠的多个请求,像在控制台章节展示中那样,您可以通过定位光标并使用动作菜单向 Elasticsearch 提交请求。类似的,您可以一次选择多个请求: 图 5. 选择多个请求 控制台会依次提交请求到 Elasticsearch ,并将 Elasticsearch 返回的结果显示在右边窗口。这在调试问题或在多个场景中尝试查询组合时会非常方便。 选择多个请求还允许您
我正在尝试编写一个服务器,它通过使用唯一生成的ID来跟踪其客户端。这个想法是,如果我是管理员,并且我想从服务器上引导某人,我就为该客户机查找适当的ClientID(它实际上只是一个字符串;唯一的区别是ClientID类负责确保没有两个客户机被分配了相同的ID),然后输入一个命令,如“kick 12”(如果我想要kick的人的ClientID碰巧是12)。我认为这是可行的,因为我认为可能是通过内部使