5

मैं नियमित रूप से 500 त्रुटियों को साफ करना चाहता हूं एयरब्रैक के माध्यम से आओ। मैं उत्पादन में रेल 4.2.4 साइट चला रहा हूं और मुझे आवर्ती त्रुटि मिलती है जो मुझे काफी परेशान कर रही है।अनुरोधों में अजीब प्रतीकों के साथ रेल सर्वर त्रुटि त्रुटि। स्वीकार करता है: "[" \ xE2 \ x80 \ x8B/\ xE2 \ x80 \ x8B "]"

त्रुटि है:

Missing partial shared/_rhs with {:locale=>[:en], :formats=>["\xE2\x80\x8B/\xE2\x80\x8B"], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :haml, :jbuilder]}.

त्रुटि के लिए airbrake की env अनुभाग को देखते हुए, संबंधित खंड हो गया लगता है:

"action_dispatch.request.accepts": "[\"\\xE2\\x80\\x8B/\\xE2\\x80\\x8B\"]", "action_dispatch.request.content_type": "", "action_dispatch.request.flash_hash": "", "action_dispatch.request.formats": "[\"\\xE2\\x80\\x8B/\\xE2\\x80\\x8B\"]",

यह ब्राउज़र की तरह दिखता है (क्रोम के रूप में आत्म-पहचान) एक अपरिचित प्रारूप के लिए पूछ रहा है, लेकिन मुझे नहीं पता कि यह ऐसा क्यों करेगा। ऐसा लगता है कि यह सिर्फ सिर के लिए पूछ रहा है।

मैं इसे अनदेखा कर सकता हूं, लेकिन अगर किसी के पास कोई विचार है कि यह पहली जगह क्यों होता है, तो मुझे दिलचस्पी होगी।

(हटाया सामग्री आइटम की पहचान करने के साथ) पूर्ण env है:

{ "DOCUMENT_ROOT": "[******]", "HTTPS": "on", "HTTP_ACCEPT": "​/​", "HTTP_ACCEPT_ENCODING": "gzip,deflate,sdch", "HTTP_ACCEPT_LANGUAGE": "en-US,en;q=0.8", "HTTP_CACHE_CONTROL": "no-cache", "HTTP_CONNECTION": "keep-alive", "HTTP_HOST": "[******]", "HTTP_PRAGMA": "no-cache", "HTTP_USER_AGENT": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.49 Safari/537.36", "ORIGINAL_FULLPATH": "[******]", "ORIGINAL_SCRIPT_NAME": "", "PASSENGER_APP_ENV": "live", "PASSENGER_APP_TYPE": "rack", "PASSENGER_SHOW_VERSION_IN_HEADER": "false", "PATH_INFO": "[******]", "QUERY_STRING": "", "REMOTE_ADDR": "[******]", "REMOTE_PORT": "47888", "REQUEST_METHOD": "HEAD", "REQUEST_URI": "[******]", "ROUTES_40753200_SCRIPT_NAME": "", "ROUTES_48254480_SCRIPT_NAME": "", "SCGI": "1", "SCRIPT_NAME": "", "SERVER_ADDR": "[******]", "SERVER_NAME": "[******]", "SERVER_PORT": "443", "SERVER_PROTOCOL": "HTTP/1.1", "SERVER_SOFTWARE": "nginx/1.6.0", "action_dispatch.cookies_digest": "", "action_dispatch.cookies_serializer": "", "action_dispatch.parameter_filter": "[\"password\"]", "action_dispatch.redirect_filter": "[]", "action_dispatch.remote_ip": "[******]", "action_dispatch.request.accepts": "[\"\\xE2\\x80\\x8B/\\xE2\\x80\\x8B\"]", "action_dispatch.request.content_type": "", "action_dispatch.request.flash_hash": "", "action_dispatch.request.formats": "[\"\\xE2\\x80\\x8B/\\xE2\\x80\\x8B\"]", "action_dispatch.request.parameters": { "action": "show_by_tag_and_slug", "controller": "[******]", "slug": "[******]", "tag": "[******]" }, "action_dispatch.request.path_parameters": { "action": "show_by_tag_and_slug", "controller": "[******]", "slug": "[******]", "tag": "[******]" }, "action_dispatch.request.query_parameters": "", "action_dispatch.request.request_parameters": "", "action_dispatch.request_id": "f120141c-58e6-4429-ad98-1ab352f1c7ce", "action_dispatch.show_detailed_exceptions": "false", "action_dispatch.show_exceptions": "true", "newrelic.transaction_started": "true", "preview_manager": "#<Preview::Manager:0x007fa334e8eca0>", "rack.hijack": "#<Proc:[email protected]/home/release/.rvm/gems/ruby-2.2.2/gems/passenger-4.0.53/lib/phusion_passenger/rack/thread_handler_extension.rb:69 (lambda)>", "rack.hijack?": "true", "rack.multiprocess": "true", "rack.multithread": "false", "rack.request.query_hash": "", "rack.request.query_string": "", "rack.run_once": "false", "rack.url_scheme": "https", "rack.version": "[\"1\", \"2\"]", "warden": "Warden::Proxy:70169690063580 @config={:default_scope=>:user, :scope_defaults=>{}, :default_strategies=>{:user=>[:rememberable, :database_authenticatable]}, :intercept_401=>false, :failure_app=>#<Devise::Delegator:0x00000004e859a0>}" }

उत्तर

5

पात्रों \xE2\x80\x8B यूनिकोड में zero-width space character होने लगते हैं। यही कारण है कि, यदि आप स्ट्रिंग को रूबी कंसोल में पेस्ट करते हैं, तो आपको निम्न प्राप्त होंगे:

"\xE2\x80\x8B/\xE2\x80\x8B" 
# => "​/​" 

आईई। प्रतीत होता है कि सिर्फ / स्लैश है लेकिन वास्तव में दो शून्य-चौड़ाई वाली जगहों से घिरा हुआ है। मुझे कोई संकेत नहीं है कि ब्राउज़र Accepts हेडर में ऐसे वर्ण क्यों भेजेगा, यह ब्राउज़र में एक बग हो सकता है या यहां तक ​​कि किसी प्रकार का हमला भी हो सकता है ...

+0

बेशक! यह एक यादृच्छिक हमला हो सकता है जो कुछ सर्वरों को तोड़ने के लिए होता है। यद्यपि रेल धन्यवाद सही ढंग से प्रतिक्रिया दे रहा है। अंतर्दृष्टि के लिए धन्यवाद, एक हरा टिक है। –

+1

ऐसा लगता है कि यह या तो इस विशिष्ट क्रोम संस्करण की एक बग या भेद्यता है। हमें 5 महीने बाद क्रोम (50.0.2661.4 9) के ठीक उसी कारावास द्वारा भेजा जाने वाला सटीक स्वीकृति हेडर का सामना करना पड़ा। – Janosch

+0

अद्यतन Janosch, और अच्छा जासूस काम के लिए धन्यवाद। मैं अभी भी उन्हें नियमित रूप से नियमित रूप से प्राप्त कर रहा हूं, मैं क्रोम संस्करणों को दोबारा जांच दूंगा। –

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