【发布时间】:2014-06-26 21:55:13
【问题描述】:
我在服务器端运行了一个 Dart 应用程序。它正在侦听特定端口并且工作正常。问题是:我的听众正在响应最喜欢的图标(favicon)的 GET。
我怎样才能避免这种情况?
编辑:给出一些代码示例。
import 'dart:io';
void main() {
print("Starting server.");
HttpServer.bind(InternetAddress.LOOPBACK_IP_V4, 4041)
.then(listenForRequests)
.catchError((e) => print (e.toString()));
}
listenForRequests(HttpServer _server) {
_server.listen((HttpRequest request) {
if (request.method == 'GET') {
handleGet(request);
} else {
request.response.statusCode = HttpStatus.METHOD_NOT_ALLOWED;
request.response.write("Unsupported request: ${request.method}.");
request.response.close();
}
},
onDone: () => print('No more requests.'),
onError: (e) => print(e.toString()) );
}
void handleGet(HttpRequest request) {
int requestNumber = 1;
print(requestNumber); // This shows me the request number. Just for information.
print(request.uri); // This shows me the request from the client browser.
request.response.statusCode = HttpStatus.OK;
request.response.close();
}
这是这段代码的输出:
1
/SOME_REQUEST_FROM_THE_BROWSER
2
/favicon.ico
【问题讨论】:
-
所以你的应用程序模仿了一个网络服务器?
-
@Robert 实际上,我正在开发一个 Web 应用程序,它将在服务器端处理文件操作(创建、打开、保存),并且由于 Dart 无法在客户端运行 dart:io,我必须在服务器上运行 HTTP 请求侦听器。我对 Dart 很陌生,我不知道这是否是处理客户端-服务器操作的正确方法,但如果是,我必须避免响应与我的应用程序无关的 GET 请求。