Domino配置PUT/PATCH/DELETE方法触发405错误该如何解决?
Domino配置PUT/PATCH/DELETE请求405问题解决方案
你遇到的两次405错误分别对应两个不同的拦截阶段:
- 首次报错是全局HTTP方法未启用,修改
HTTPEnableMethodsnotes.ini参数后已经解决了全局拦截的问题 - 第二次报错是请求命中了Domino默认的资源处理逻辑,普通Domino资源(表单、视图、静态页面等)原生不支持PUT/DELETE/PATCH方法,要么是站点级方法允许列表未配置,要么是没有对应的自定义后端程序承接对应路径的请求
1. 补全站点/服务器级的方法允许配置
HTTPEnableMethods只是全局开关,你还需要根据你的部署模式补充对应层级的配置:
- 已启用因特网站点文档:打开对应站点文档,进入「Internet Protocols」→「HTTP」页签,找到「Allowed Methods」字段,手动添加
PUT、DELETE、PATCH到允许列表,保存文档 - 未启用因特网站点文档:打开服务器文档,进入「Internet Protocols」→「HTTP」页签,同样修改「Allowed Methods」字段添加对应方法
修改完成后需要重启HTTP服务生效。
2. 部署自定义后端程序承接API请求
正如官方帮助文档说明,PUT/DELETE等方法需要自定义程序实现才能使用,Domino环境下常用的实现方式有以下几种:
DSAPI过滤器
用C语言开发Domino DSAPI扩展,注册指定的API路径前缀,接管对应路径的所有请求,可完全自定义HTTP方法处理逻辑,适合高自由度的API开发需求。
Java Servlet/OSGi插件
将你的API逻辑封装为标准Java Servlet或Domino OSGi插件,部署到Domino的HTTP服务内置的Servlet容器中,Servlet原生支持所有HTTP方法,只要请求路径匹配到你的Servlet映射规则,就会绕过Domino默认的资源拦截逻辑。
XPages XAgent
在NSF数据库中创建无UI的XPages(即XAgent),在beforeRenderResponse事件中编写请求处理逻辑,同时需要在XPage属性中开启非POST/GET方法的支持,可配合站点URL重写规则将你的API路径映射到该XPage地址。
CGI程序
将API路径映射到你开发的CGI脚本,Domino会将原始请求方法、请求体等信息传递给CGI程序,由你自行实现业务逻辑。
3. 特殊场景适配
- 如果你使用的是11.0.1以下版本的Domino,PATCH方法存在原生支持缺陷,可采用
X-HTTP-Method-Override兼容方案:客户端发送POST请求,在请求头中携带X-HTTP-Method-Override: PATCH,后端程序读取该头字段识别为PATCH请求处理即可 - 检查站点URL重写规则,确认PUT/PATCH/DELETE请求没有被错误重定向或拦截
- 确认API对应的后端资源(如NSF数据库)的ACL权限,给访问用户配置对应操作所需的最小权限(如修改数据需要至少作者权限)
4. 配置验证
所有配置修改完成后,执行以下命令重启HTTP服务:
tell http quit # 等待10秒左右,确认HTTP进程完全退出 load http
用curl命令测试请求是否正常:
curl -v -X PUT http://<你的Domino服务地址>/<API路径> -d '测试请求体'
内容的提问来源于stack exchange,提问作者Dmytro Pastovenskyi
相关产品推荐
相关产品推荐

