2017-02-14 9 views
27

होना चाहिए जब मैं बहु-सर्वर अपाचे टॉमकैट 8 वातावरण में अपना एप्लिकेशन तैनात कर रहा हूं तो मैं स्टैक ट्रेस से नीचे जा रहा हूं। मैं इस त्रुटि अक्सर हो रही है, और यह बिल्ला धागा ब्लॉक कर रहा है लगता है:java.lang.IllegalArgumentException: विधि नाम में अमान्य वर्ण मिला। HTTP विधि नाम टोकन

INFO [http-nio-80-exec-4461] org.apache.coyote.http11.AbstractHttp11Processor.process Error parsing HTTP request header 
 Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level. 
 java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokens 
 at org.apache.coyote.http11.AbstractNioInputBuffer.parseRequestLine(AbstractNioInputBuffer.java:233) 
 at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1017) 
 at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684) 
 at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1524) 
 at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1480) 
 at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
 at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
 at java.lang.Thread.run(Unknown Source) 

किसी भी एक मुझे प्रत्यक्ष समस्या निवारण या इस तरह के एक अपवाद को सीमित करने के कर सकते हैं? मुझे अपनी किसी भी एप्लिकेशन स्रोत फ़ाइलों का कोई संदर्भ नहीं मिल रहा है। मैंने चारों ओर गुज़रने की कोशिश की, और लिंक में से यह कहा गया है कि आप https के माध्यम से http url तक पहुंचने का प्रयास कर रहे हैं, जो असंभव प्रतीत होता है। मुझे यह त्रुटि नहीं मिल रही है, जब एप्लिकेशन एक टॉमकैट 8 उदाहरण पर चलता है। मुझे यह केवल एक बहु-सर्वर वातावरण में मिलता है।

मैं प्रत्येक पृष्ठ पर एम्बेड किए गए मेटा टैग भी साझा कर रहा हूं, अगर यह कारण की पहचान करने में मदद करता है।

<% 
    response.setHeader("Cache-Control", "no-cache"); 
    response.setHeader("Cache-Control", "no-store"); 
    response.setDateHeader("Expires", 0); 
    response.setHeader("Pragma", "no-cache"); 
%> 


<head> 
<meta http-equiv="X-UA-Compatible" content="IE=edge"> 
<meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0"> 
<meta name="viewport" content="width=device-width, initial-scale=1"> 

मैं भी उपयोग कर रहा हूँ कुछ पन्नों, जो मूल रूप से ऊपर के रूप में ही है में निम्नलिखित:

<meta charset="utf-8"> 
<meta http-equiv="X-UA-Compatible" content="IE=edge"> 
<meta name="viewport" content="width=device-width, initial-scale=1"> 
<meta http-equiv="Expires" content="-1" /> 
<meta http-equiv="Cache-Control" content="private" /> 
<meta http-equiv="Cache-Control" content="no-store" /> 
<meta http-equiv="Pragma" content="no-cache" /> 

यहां तक ​​कि अगर किसी को भी मेरी समस्या निवारण करने का प्रयास करने के लिए एक दिशा देने में मदद करता है, कि उपयोगी हो सकता है, वर्तमान में मुझे कोई जानकारी नहीं है, कहां देखना है।

अग्रिम धन्यवाद।

उत्तर

53

यह अपवाद तब हो सकता है जब आप क्लाइंट से एंड्रॉइंट पर https अनुरोध निष्पादित करने का प्रयास करते हैं जो https सक्षम नहीं है। ग्राहक कच्चे डेटा की अपेक्षा करते समय क्लाइंट अनुरोध डेटा एन्क्रिप्ट करेगा।

+1

मुझे यकीन नहीं है कि मैं इस उत्तर को समझता हूं। मेरे पास स्प्रिंग बूट 1.5.1 ऐप है और मैंने अपने लॉग में यह अपवाद देखा है। मेरा ऐप केवल पोर्ट 8443 (पोर्ट 443 से रीडायरेक्ट) पर एसएसएल के लिए जवाब देता है और केवल एसएसएल के लिए एक कनेक्टर है। क्या आप कह रहे हैं कि कोई http http: https के बजाय http: http 443 पर कोशिश कर सकता है? –

+2

ऐसे अपवाद तब होते हैं जब सर्वर की अपेक्षा करता है और यह क्या होता है के बीच कोई मेल नहीं खाता है। आपने जो कहा वह संभावित परिदृश्यों में से एक है। हो सकता है कि आपके सर्वर में एक एंडपॉइंट है जो https पर नहीं चलता है, लेकिन कोई इस तरह से इसका उपयोग करने का प्रयास करता है? –

+1

हाय पीटर ... मुद्दा यह हुआ कि किसी ने पोर्ट 80 को पोर्ट 8443 पर अग्रेषित करने के लिए आईपी टेबल्स नियम बनाया, इसलिए पोर्ट 80 पर http का उपयोग करके साइट पर आने वाले किसी भी व्यक्ति ने त्रुटि उत्पन्न की। हमने बंदरगाह 8080 से 8443 को रीडायरेक्ट करने के लिए टॉमकैट कनेक्टर जोड़ा और बंदरगाह 8080 को बंदरगाह 80 से आगे बढ़ाने के लिए आईपी टेबल्स नियम स्थापित किया और समस्या सब खत्म हो गई। आपके उत्तर के लिए धन्यवाद! –

संबंधित मुद्दे