Apache Unomi Web Tracker测试报415 Unsupported Media Type错误
Apache Unomi Web Tracker 415 Unsupported Media Type 错误排查与解决
415错误的核心原因是Unomi服务端无法识别请求携带的媒体类型(Content-Type),按以下步骤逐一排查修复:
- 检查请求Content-Type配置
打开浏览器开发者工具「网络」面板,定位到报错的POST /cxs/context.json请求,查看请求头的Content-Type字段:- 若字段值为空、为
text/plain或application/x-www-form-urlencoded:是Tracker初始化时未正确设置请求头导致,在Tracker初始化代码中补充ajax配置即可:// 原有unomi初始化配置保留,补充ajax头设置 unomi.initialize({ contextServerUrl: "http://localhost:8181", siteId: "你的站点ID", ajax: { contentType: "application/json" } }); - 若字段值为
application/json; charset=utf-8:1.6.x之前的旧版Unomi接口校验逻辑不识别带charset后缀的Content-Type,会直接返回415,两种修复方式二选一:升级Unomi到1.6及以上稳定版本,或修改unomi-tracker.js的ajax发送逻辑,去掉charset参数,仅保留application/json作为Content-Type值。
- 若字段值为空、为
- 检查跨域(CORS)配置
你当前从非8181端口的页面请求Unomi服务属于跨域场景,若Unomi的CORS配置错误,预检请求被拦截时也可能返回415错误:- 进入Unomi安装目录的
etc文件夹,找到或新建org.apache.unomi.web.cfg配置文件 - 添加/修改以下配置项:
org.apache.unomi.web.cors.allowed.origins=http://localhost,http://127.0.0.1 org.apache.unomi.web.cors.allowed.methods=GET,POST,OPTIONS,HEAD org.apache.unomi.web.cors.allowed.headers=Content-Type,Authorization,X-Requested-With,Accept,Origin org.apache.unomi.web.cors.support.credentials=true- 重启Unomi服务使配置生效。
- 进入Unomi安装目录的
- 检查Tracker脚本版本匹配度
你当前使用的是自行部署在/tracker/路径下的unomi-tracker.js,若脚本版本和Unomi服务端版本跨大版本(比如服务端是2.x版本,脚本是1.x版本),请求构造逻辑不兼容也会触发该错误。优先直接引用Unomi服务自带的Tracker脚本http://localhost:8181/unomi-tracker.js做测试,排除版本不匹配问题。 - 检查接口匿名访问权限
若Unomi开启了接口安全校验,/cxs/context.json未加入匿名访问白名单时,部分安全过滤器会直接返回415而非401/403错误。打开etc/org.apache.unomi.security.cfg配置文件,确认org.apache.unomi.security.anonymous.urls配置项中包含/cxs/context.json路径,允许事件上报接口匿名访问。
内容的提问来源于stack exchange,提问作者Neveen S.Nagy
相关产品推荐
相关产品推荐

