A F*_*kly 6 format google-chrome ruby-on-rails ruby-on-rails-4 server
我经常喜欢清理通过Airbrake传来的500个错误.我正在生产Rails 4.2.4网站,我得到一个反复出现的错误,我发现它很令人费解.
错误是:
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\"]",
看起来浏览器(自我识别为Chrome)要求一种无法识别的格式,但我不知道为什么会这样做.它似乎只是要求头部.
我可以忽略它,但如果有人有任何关于它为什么首先出现的想法,我会感兴趣.
完整的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:0x007fa34ee79020@/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>}"
}
 
字符\xE2\x80\x8B似乎是Unicode中的零宽度空格字符.这就是为什么,如果你将字符串粘贴到ruby控制台,你将获得以下内容:
"\xE2\x80\x8B/\xE2\x80\x8B"
# => "?/?"
Run Code Online (Sandbox Code Playgroud)
即看似只是斜线/但实际上被两个零宽度空间包围.我不知道为什么浏览器会在Accepts标题中发送这样的字符,它可能是浏览器中的错误甚至是某种攻击......
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           893 次  |  
        
|   最近记录:  |