【问题标题】:Dart httpServer 404 not found pageDart httpServer 404 未找到页面
【发布时间】:2012-11-28 09:21:47
【问题描述】:

Dart 中如何使用 HTTP 服务器完成 404 重定向?

伪代码:

server.addRequestHandler(notFound, redirectTo(...));

提前致谢。

【问题讨论】:

  • 404 == 未找到重定向是什么意思?
  • 我想他的意思是 404 页面应该只是重定向到网站的另一个页面,也许是在延迟之后。
  • Seth Ladd 有一个很好的起点:stackoverflow.com/questions/13081740/…
  • 404 不应用于重定向。这就是 3xx 响应代码的用途。如果您想在 404 延迟后重定向,请使用脚本在客户端上执行此操作。

标签: dart


【解决方案1】:

如果你想做一个URL redirection,你可以使用:

  • Refresh 标头:
server.addRequestHandler(notFound, (HttpRequest request, HttpResponse response) {
  response.statusCode = HttpStatus.NOT_FOUND;
  response.headers.set("Refresh", "0; url=http://www.example.com/");
  response.outputStream.close();
});
  • Meta refresh 如果你想在重定向之前显示一些文本:
server.addRequestHandler(notFound, (HttpRequest request, HttpResponse response) {
  response.statusCode = HttpStatus.NOT_FOUND;
  response.headers.set(HttpHeaders.CONTENT_TYPE, 'text/html');
  response.outputStream.writeString(
      '<!DOCTYPE html>'
      '<meta http-equiv="Refresh" content="5; url=\'http://example.com/\'">'
      'Page requested cannot be found. You will be redirected in few seconds...'
  );
  response.outputStream.close();
});

【讨论】:

  • 另一种方法是使用文件位置标头:response.headers.set("location", url);
  • 不幸的是,带有404 状态和location 标头的重定向似乎不起作用。这就是为什么我没有提到这个标题。
  • 我认为问题是“如果我的服务器有 404,我如何重定向到新页面”?所以这有两个部分......如何捕获404(也许他在询问静态文件中的404)然后如何重定向。不过,他没有具体说明程序如何知道如何从 A 重定向到 B。
  • 感谢赛斯澄清问题。感谢 Alexandre 提供的出色样品。我认为我真正应该使用的是 server.defaultRequestHandler。
猜你喜欢
  • 1970-01-01
  • 2015-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-15
  • 2015-05-19
相关资源
最近更新 更多