NanoHttpd
加拿大
NanoHttpd

NanoHTTPD是一个轻量级 HTTP 服务器,设计用于嵌入其他应用程序,根据修改的 BSD 许可证发布。

项目结构

NanoHTTPD项目目前由四个部分组成:

/core– 功能齐全的 HTTP(s) 服务器,由一 (1) 个 Java 文件组成,可以为您自己的项目进行定制/继承。

/samples– 有关如何自定义 NanoHTTPD 的简单示例。请参阅HelloServer.java,了解热情欢迎您的杀手级应用程序!

/websocket– Websocket 实现,也在单个 Java 文件中。取决于核心。

/webserver– 独立文件服务器。奔跑并享受。一种流行的用途似乎是从 Android 设备上提供文件。

/nanolets– 独立的 Nano 应用服务器,为实施者提供类似 servlet 的系统。

/fileupload– 集成apache通用文件上传库。

HTTP服务器,通常称为Web服务器

需要具备以下基本功能:

1. 建立连接:能够接受来自客户端的连接请求,并建立TCP连接。

2. 接收请求:通过建立的连接,接收客户端发送的HTTP请求。这包括请求行、请求头和请求体。

3. 解析请求:对收到的HTTP请求进行解析,理解客户端的请求类型(如GET、POST、PUT等)以及请求的资源(通过URI标识)。

4. 处理请求:根据请求类型和资源,执行相应的操作。这可能包括检索静态资源(如HTML文件、图片等),执行服务器端脚本,或者与其他服务器进行通信(如通过API请求)。

5. 访问资源:在处理请求时,可能需要访问服务器上的文件系统或其他资源。

6. 构建响应:生成HTTP响应,包括状态码(如200 OK、404 Not Found等)、响应头和响应体。

7. 发送响应:将构建好的响应通过建立的连接发送回客户端。

8. 维持连接:对于持久连接(如HTTP/1.1中的Keep-Alive),需要维持连接状态,以便于客户端可以发送多个请求。

9. 处理并发:对于多用户同时访问的情况,Web服务器需要能够处理并发请求,这通常通过多线程或异步处理实现。

10. 记录日志:记录HTTP事务的详细信息,包括请求和响应的头部、客户端的IP地址、请求时间等,这对于监控服务器性能和安全性至关重要。

11. 安全性:确保传输的数据安全,可能包括数据加密(如使用HTTPS)、防止常见的安全威胁(如跨站脚本攻击、SQL注入等)。

12. 配置和扩展性:支持配置文件的修改,以便于调整服务器的行为,同时也支持扩展,如通过插件或模块增加新的功能。

这些功能确保了Web服务器可以正确、有效地处理来自客户端的请求,并提供所需的服务。不同的Web服务器软件(如Apache、Nginx、IIS等)在实现这些功能时可能有不同的方式和优缺点。

NanoHTTPD特征

只有一个Java文件,提供HTTP 1.1支持。

没有固定的配置文件、日志记录、授权等。(如果需要,请自行实现。不过,错误会传递给 java.util.logging。)

支持 HTTPS (SSL)。

对 cookie 的基本支持。

支持GET和POST方法的参数解析。

对 HEAD、POST 和 DELETE 请求的一些内置支持。不过,您可以轻松实现/自定义任何 HTTP 方法。

支持文件上传。对于小型上传使用内存,对于大型上传使用临时文件。

从不缓存任何东西。

默认情况下不限制带宽、请求时间或同时连接。

所有标头名称都转换为小写,因此它们在浏览器/客户端之间不会有所不同。

持久连接(连接“保持活动”)支持允许通过单个套接字连接提供多个请求。

网络套接字

在 Firefox、Chrome 和 IE 上进行了测试。

网络服务器

默认代码提供文件并显示(在控制台上打印)所有 HTTP 参数和标头。

支持动态内容和文件服务。

文件服务器支持目录列表index.html和index.htm.

文件服务器支持部分内容(流式传输和继续下载)。

文件服务器支持 ETag。

文件服务器对没有/.

文件服务器还可以提供很长的文件,而无需内存开销。

包含最常见 MIME 类型的内置列表。

运行时扩展支持(服务特定 MIME 类型的扩展)- 服务 Markdown 格式文件的示例扩展。只需在 Web 服务器类路径中包含扩展 JAR 就足以加载扩展。

通过参数 实现简单的CORS支持--cors

--cors:激活 CORS 支持,Access-Control-Allow-Origin将设置为*。

--cors=some_value:Access-Control-Allow-Origin将被设置为some_value.

默认情况下服务Access-Control-Allow-Headers: origin,accept,content-type

通过设置系统属性来设置的可能性Access-Control-Allow-Headers:AccessControlAllowHeader

_例子:_-DAccessControlAllowHeader=origin,accept,content-type,Authorization

可能的值:

CORS 参数示例

--cors=http://appOne.company.com

--cors="http://appOne.company.com, http://appTwo.company.com": 请注意双引号,以便两个 URL 被视为单个参数的一部分。

NanoHttpd数据统计

NanoHttpd数据评估

NanoHttpd浏览人数已经达到0,如你需要查询该站的相关权重信息,可以点击"5118数据""爱站数据""Chinaz数据"进入;以目前的网站数据参考,建议大家请以爱站数据为准,更多网站价值评估因素如:NanoHttpd的访问速度、搜索引擎收录以及索引量、用户体验等;当然要评估一个站的价值,最主要还是需要根据您自身的需求以及需要,一些确切的数据则需要找NanoHttpd的站长进行洽谈提供。如该站的IP、PV、跳出率等!

关于NanoHttpd特别声明

本站商娱网提供的NanoHttpd都来源于网络,不保证外部链接的准确性和完整性,同时,对于该外部链接的指向,不由商娱网实际控制,在2024年3月1日 12:22收录时,该网页上的内容,都属于合规合法,后期网页的内容如出现违规,可以直接联系网站管理员进行删除,商娱网不承担任何责任。

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...