2016-08-15 1 views
1

POST 전화를 걸고 있습니다. 호출이 한 시스템에서 작동하고 (예 : system1) 다른 시스템에서 작동하지 않습니다 (예 : system2).jdk 1.8.0_91의 Accept-Encoding 헤더에 오류가 있습니다.

[2016-08-15 20:22:43.242] [qtp2024542466-14] [ERROR] [c.a.b.e.m.AbstractExceptionMapper] [Error executing rest API.Error Message: Illegal character(s) in message header field: Accept-Encoding:> Req: (POST //backend.morph.ai:8080/rest/panel/auth/signup?)@691675178 [email protected] 
Ref id: 201608152022-695a6dc8-10f6-4382-ae93-de62c84fcc21] [javax.ws.rs.ProcessingException: Illegal character(s) in message header field: Accept-Encoding: 
    at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:263) 
    at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:671) 
    at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:668) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:228) 
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:444) 
    at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:668) 
    at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:428) 
    at org.glassfish.jersey.client.JerseyInvocation$Builder.post(JerseyInvocation.java:334) 
    at com-------------------------Internal Class 
    at com-------------------------Internal Class 
    at com-------------------------Internal Class 
    at com-------------------------Internal Class 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81) 
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144) 
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161) 
    at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:160) 
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99) 
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389) 
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347) 
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102) 
    at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:308) 
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) 
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:267) 
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317) 
    at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:291) 
    at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1140) 
    at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:403) 
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:386) 
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:334) 
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:221) 
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:816) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1684) 
    at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176) 
    at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145) 
    at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92) 
    at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:394) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1667) 
    at com-------------------------Internal Class 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1667) 
    at org.eclipse.jetty.servlets.CrossOriginFilter.handle(CrossOriginFilter.java:275) 
    at org.eclipse.jetty.servlets.CrossOriginFilter.doFilter(CrossOriginFilter.java:238) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1667) 
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581) 
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) 
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) 
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226) 
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1113) 
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511) 
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) 
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1047) 
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) 
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213) 
    at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109) 
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119) 
    at org.eclipse.jetty.server.Server.handle(Server.java:517) 
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:302) 
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242) 
    at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:238) 
    at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95) 
    at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:57) 
    at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213) 
    at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147) 
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654) 
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.IllegalArgumentException: Illegal character(s) in message header field: Accept-Encoding: 
    at sun.net.www.protocol.http.HttpURLConnection.checkMessageHeader(HttpURLConnection.java:489) 
    at sun.net.www.protocol.http.HttpURLConnection.isExternalMessageHeaderAllowed(HttpURLConnection.java:459) 
    at sun.net.www.protocol.http.HttpURLConnection.setRequestProperty(HttpURLConnection.java:3018) 
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.setRequestProperty(HttpsURLConnectionImpl.java:316) 
    at org.glassfish.jersey.client.HttpUrlConnector.setOutboundHeaders(HttpUrlConnector.java:362) 
    at org.glassfish.jersey.client.HttpUrlConnector.access$100(HttpUrlConnector.java:91) 
    at org.glassfish.jersey.client.HttpUrlConnector$4.getOutputStream(HttpUrlConnector.java:325) 
    at org.glassfish.jersey.message.internal.CommittingOutputStream.commitStream(CommittingOutputStream.java:200) 
    at org.glassfish.jersey.message.internal.CommittingOutputStream.commitStream(CommittingOutputStream.java:194) 
    at org.glassfish.jersey.message.internal.CommittingOutputStream.commit(CommittingOutputStream.java:262) 
    at org.glassfish.jersey.message.internal.OutboundMessageContext.commitStream(OutboundMessageContext.java:816) 
    at org.glassfish.jersey.client.ClientRequest.writeEntity(ClientRequest.java:545) 
    at org.glassfish.jersey.client.HttpUrlConnector._apply(HttpUrlConnector.java:329) 
    at org.glassfish.jersey.client.HttpUrlConnector.apply(HttpUrlConnector.java:242) 
    at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:254) 
    ... 73 common frames omitted 

헤더

내가 두 시스템에서 헤더를 다음 보낸다 :

나는 다음과 같은 오류가 무엇입니까 Accept-Encoding: gzip, deflate, br

자바 버전을 시스템 1 :

,321 0

하는 system2 :

dk8-b91 : http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/169451cf0cc5/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java

jdk8-b51 : http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/e865efbc7105/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java

I은 ​​또한 에러 ( checkMessageHeader 방법 코드 체크) 발생 된 소스 코드를 확인하려

openjdk version "1.8.0_91" 
OpenJDK Runtime Environment (build 1.8.0_91-8u91-b14-3ubuntu1~16.04.1-b14) 
OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode) 

두 파일 모두 checkMessageHeader의 소스 코드는 identi입니다. 칼. 또한 소스 코드에서 \n을 확인하고 일부 조건을 확인한 후 오류가 발생하지만 \n이있는 경우에만 오류가 발생합니다. 키나 값에 \n이 없습니다.

무엇이 문제인지 이해할 수 없습니까? 또는 진행 방법?

+0

Accept-Encoding의 내용을 확인하십시오. 가능하면 질문에 – 11thdimension

+0

을 추가하십시오. 질문에 이미 추가했습니다 (아래의 공유 스택 추적 참조). 강조 표시하겠습니다. –

+0

모든 쉼표와 함께 선행 쉼표를 제거하십시오. – 11thdimension

답변

0

제 경우의 해결책을 찾았습니다. ':'문자로 문제가 발생하고 있습니다 (적어도 제 경우).

다음 작업을 수행 할 경우

headers.put ("인증", Collections.singletonList ("무기명 123"));

괜찮습니다.

그래서 "Accept-Encoding"이 제공되면 키를 "Accept-Encoding :"으로 제공하는 대신이 스레드의 원래 문제로 생각합니다.

Chrees!

관련 문제