【问题标题】:Jolokia - Origin null is not allowed to call this agentJolokia - Origin null 不允许调用此代理
【发布时间】:2019-10-29 15:11:29
【问题描述】:

{"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

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

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 的经验为零。

【问题讨论】:

    标签: java tomcat httprequest javaagents jolokia


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      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. Cross-Origin Resource Sharing (CORS) restrictions

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-07
        相关资源
        最近更新 更多