Wiremock针对HEAD请求返回404错误的问题咨询
Wiremock HEAD请求静态文件返回404的原因及解决办法
原因
Wiremock 默认的静态文件服务仅对 GET 请求配置了自动路由映射,HEAD 请求不会被自动关联到对应的静态资源。当你发送 HEAD 请求时,Wiremock 找不到匹配的路由规则,因此返回 404 错误。
尽管 HTTP 规范要求 HEAD 请求应返回与对应 GET 请求一致的响应头(不含响应体),但 Wiremock 的默认静态资源处理逻辑并未实现这一自动映射,必须手动配置规则来支持。
解决方法
1. 单独配置 HEAD 请求路由
在 Wiremock 的 mappings 目录下创建映射文件(例如 head-myfile-mapping.json),内容如下:
{ "request": { "method": "HEAD", "url": "/api/file/myfile.json" }, "response": { "status": 200, "bodyFileName": "api/files/myfile.json" } }
Wiremock 会读取指定文件的元信息(如 Content-Type、Content-Length)并返回响应头,不会返回响应体,符合 HEAD 请求的要求。
2. 让现有 GET 映射兼容 HEAD 请求
如果希望同一路由同时支持 GET 和 HEAD,可以修改映射文件的 method 字段为正则匹配:
{ "request": { "method": {"matches": "GET|HEAD"}, "url": "/api/file/myfile.json" }, "response": { "status": 200, "bodyFileName": "api/files/myfile.json" } }
这样两种请求方法都会匹配到该路由,Wiremock 会自动处理 HEAD 请求仅返回响应头的逻辑。
内容的提问来源于stack exchange,提问作者Guenhaël
相关产品推荐
相关产品推荐

