5

{"stacktrace":"java.lang.Exception: Origin null 不允许调用此代理\n\tat org.jolokia.http.HttpRequestHandler.handleThrowable(HttpRequestHandler.java:242)\n\tat org.jolokia.jvmagent .handler.JolokiaHttpHandler.doHandle(JolokiaHttpHandler.java:243)\n\tat org.jolokia.jvmagent.handler.JolokiaHttpHandler.handle(JolokiaHttpHandler.java:178)\n\tat com.sun.net.httpserver.Filter$Chain .doFilter(Filter.java:79)\n\tat sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:83)\n\tat com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java :82)\n\tat sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:675)\n\tat com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:79 )\n\tat sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:647)\n\tat java.util.concurrent.ThreadPoolExecutor。runWorker(ThreadPoolExecutor.java:1142)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\n\tat java.lang.Thread.run(Thread.java:748)\n ","error_type":"java.lang.Exception","error":"java.lang.Exception : Origin null 不允许调用此代理","status":403}

当我尝试查询我的“jolokia”代理时出现此错误。

curl  http://localhost:8778/jolokia/list

如手册https://jolokia.org/reference/html/agents.html#agents-jvm中所述,我已经使用 jolokia 代理启动了我的 java 应用程序 (kibana) 。

java -javaagent:agent.jar=port=8778,host=localhost

我可以看到(ps -aux)该进程在 Java 参数之间使用 jolokia 代理启动。

我还尝试在我的 Tomcat /webapps 中部署 jolokia 战争。我已经编辑了 user.xml 文件以添加用户 Jolokia,但我得到了相同的结果

我通过谷歌搜索错误得到的唯一结果似乎是第 287 行的 Jolokia 代码,这似乎暗示主机或地址错误,但我正在从 localhost 做所有事情,这应该是允许的。 https://github.com/rhuss/jolokia/blob/master/agent/core/src/main/java/org/jolokia/http/HttpRequestHandler.java

我错过了一些设置吗?测试它的最佳方法是什么?我对 Java 应用程序和 Jolokia 的经验为零。

4

2 回答 2

1

根据您当前的配置是否需要更改。根据您的确切错误行,您需要在 http 请求中添加“Origin”标头。

例如 -curl http://localhost:8778/jolokia/list -H "Origin:http://localhost"

请记住,如果您启用了默认 CORS,请<allow-origin><cors>标签下添加异常。

于 2021-08-19T06:31:05.160 回答
0

Jolokia 默认设置为阻止所有 CORS,在apache-activemq/webapps/api/WEB-INF/classes/jolokia-access.xml文件中。

<cors>
 <strict-checking/>
</cors>

您可以通过删除上述配置或在**严格检查**之前添加允许的来源来禁用它。

<cors>
 <!-- Allow cross origin access from www.jolokia.org ... -->
 <allow-origin>http://www.jolokia.org</allow-origin>

 <!-- ... and all servers from jmx4perl.org with any protocol ->
 <allow-origin>*://*.jmx4perl.org</allow-origin>

 <!-- Check for the proper origin on the server side, too -->
 <strict-checking/>
</cors>

更多细节请参考4.1.5。跨域资源共享 (CORS) 限制

于 2021-05-19T02:16:26.873 回答