为什么80%的码农都做不了架构师?>>>   

jetty 在请求URI里传入非法字符(如直接一个16进制字节A1,非%A1,用抓包TCP工具发送),jetty抛出如下错误

8.1.0.RC1、

8.1.18.v20150929、

9.3好的

如果前面代理用nginx的proxy_next_upstream,会认为该节点失效,如果请求刷的厉害,有可能所有节点都被刷成不健康状态;导致nginx返回给用户502;

org.eclipse.jetty.util.Utf8Appendable$NotUtf8Exception: Not valid UTF8! byte Fd in state 0at org.eclipse.jetty.util.Utf8Appendable.appendByte(Utf8Appendable.java:178)at org.eclipse.jetty.util.Utf8Appendable.append(Utf8Appendable.java:117)at org.eclipse.jetty.http.HttpURI.toUtf8String(HttpURI.java:503)at org.eclipse.jetty.http.HttpURI.getPathAndParam(HttpURI.java:687)at org.eclipse.jetty.server.Request.getRequestURI(Request.java:1024)at org.eclipse.jetty.server.Response.sendError(Response.java:364)at org.eclipse.jetty.server.Response.sendError(Response.java:419)at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:603)at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:971)at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1033)at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:640)at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:231)at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:696)at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:53)at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)at java.lang.Thread.run(Thread.java:695)

8.1.18在处理请求的时候,utf-8转码失败会使用ios-8859-1,找不到返回404

2015-11-16 15:37:43.763:WARN:oejs.AbstractHttpConnection:Failed UTF-8 decode for request path, trying ISO-8859-1

但是奇怪的是,在处理返回 Response.sendError,代码里调用 Request.getRequestURI,用utf-8转码,引起异常,导致直接关闭连接;

初步解决思路:

1.升9版本,但是jetty9.3默认是编译jdk8,jdk还在6跑着,风险不小

2.nginx改nginx_upstream_check_module

http://nolinux.blog.51cto.com/4824967/1594029

3.改下8.1.18的代码(手生哎),初步想法

response.sendError()--->request.getRequestURI()-->HttpURI.getPathAndParam发生NotUtf8Exception换用8599-1获取

public String getPathAndParamISO8859(){if (_path==_query)return null;return StringUtil.toString(_raw,_path,_param-_path,StringUtil.__ISO_8859_1);}

4.proxy_next_upstream 最后加个max_fails=0的节点,反正前面都错了,这个节点撑着(没人故意刷你死不了);

jetty,nginx都不算熟悉,有大牛请指导、自己记录,误人勿怪!!!!

转载于:https://my.oschina.net/greki/blog/530951

jetty 在请求URI里传入非法字符,jetty会断开连接,导致nginx认为该节点不健康相关推荐

  1. 在请求目标中找到无效字符。有效字符在RFC 7230和RFC 3986中定义

    使用Tomcat8部署项目时,有接口会报400错误,后端提示在请求目标中找到无效字符.有效字符在RFC 7230和RFC 3986中定义 原因 在日志显示的请求地址中包含非法字符,出现400错误 to ...

  2. SharePoint 2013的限制(三)非法字符

    SharePoint里有一些字符是不被允许使用的.比如SharePoint默认会阻止上传一些类型的文件,比如exe. 再比如,上传名字含有{}的文件,会得到如下提示: 除此之外,SharePoint还 ...

  3. java.net.URISyntaxException: Illegal character in query at index,http请求url中有非法字符导致

    在url中包含('|''&')这些字符直接用HttpClient请求就会报上述错误, 在网上看了一下解决办法有两种都是将非法字符进行转码再请求 列如:String url=http://bai ...

  4. JAVA中的URL和URI类的使用出现的非法字符问题

    今天在利用URI来创建文件对象的时候出现了异常 说是urI中包含了非法字符,一看发现URI中有一个空格字符 RFC3986文档规定,Url中只允许包含英文字母(a-zA-Z).数字(0-9).-_.~ ...

  5. Discuz!您当前的访问请求当中含有非法字符,已经被系统拒绝!

    Discuz!系统的_xss_check()函数原本的意义是为了论坛安全,防止XSS攻击,一般网站使用是不会出现什么问题的,但是有些网站要接入第三方接口,当第三方接口向本站post数据的时候就会报&q ...

  6. Discuz!您当前的访问请求当中含有非法字符,已经被系统拒绝解决办法

    Discuz!系统的_xss_check()函数原本的意义是为了论坛安全,防止XSS攻击,一般网站使用是不会出现什么问题的,但是有些网站要接入第三方接口,当第三方接口向本站post数据的时候就会报&q ...

  7. python write非法字符报错_Python爬虫实现的微信公众号文章下载器

    平时爱逛知乎,收藏了不少别人推荐的数据分析.机器学习相关的微信公众号(这里就不列举了,以免硬广嫌疑).但是在手机微信上一页页的翻阅历史文章浏览,很不方便,电脑端微信也不方便. 所以我就想有什么方法能否 ...

  8. nginx 拦截非法字符,nginx禁止url访问特定字符,nginx过滤url访问

    nginx 拦截非法字符,nginx禁止url访问特定字符,nginx过滤url访问 参考代码一 #前缀为无限,后面的精准屏蔽字符 123 #资源宝分享:www.httple.net if ($req ...

  9. 替换不文明词语和非法字符

    //替换不文明词语和非法字符 string StrReplaceSk(string checkstr) {     string repstr="";     if(Applica ...

最新文章

  1. 【风控模型】融合模型Bagging构建信用评分卡模型
  2. BlueMix与商业智能BI(第二部分:Bluemix应用创建)
  3. 安装spark1.3.1单机环境
  4. 侣信即时通讯系统全新发布
  5. Apache Kylin 入门 1 - 基本概念
  6. 人工智能在电力系统中的应用前景怎么样
  7. 硅谷系创业公司,这家深耕物联网22年的Fabless终于走到上市关口
  8. dw自动生成html,如何用Dreamweaver快速创建HTML代码
  9. 卡尔曼滤波原理与应用
  10. MongoDB(shel)-表增删改
  11. 掌握茼蒿施肥方式,想不高产都难。
  12. jetbrains intellij idea从2021.2.3版本开始需要用户登录之后才能使用,2021.2.2版本以及之前的版本不用登录
  13. 8086CPU学习笔记:8086的寻址方式
  14. XCTF mobile新手区解题记录(WP)以及一些总结和思考
  15. 汽车灯具、连接器IPX9K IP69K防护等级测试
  16. LabVIEW学习分享(2)
  17. Java实现 LeetCode 403 青蛙过河
  18. Explaining Deep Neural Networks
  19. “Outlook 中的搜索结果不正确,因为缺少MapiPH.dll” 的解决方法
  20. 席慕蓉的话,足以震碎整个心

热门文章

  1. git 常用操作命令(Common operation)
  2. Leetcode4---求两个排序数组的中位数
  3. 关于EF查询表里的部分字段
  4. JavaScript面向对象编程深入分析
  5. Windows Service:用C#创建Windows Service
  6. 张小龙内部分享:一个产品只能有一个主线功能
  7. PMCAFF微课堂「已结束」| 测试兄弟CEO揭秘如何提高创初团队的产品质量
  8. 用数据挖掘来支持音乐创作
  9. 【软件安装】sublime安装方法
  10. 区块链,使用 Go-Ethereum 搭建以太坊私有链