精华内容
下载资源
问答
  • 主要介绍了Linux服务器nginx访问日志里出现大量http 400错误的请求分析,需要的朋友可以参考下
  • 如何解决:正常安装php后,出现http 400错误
  • http400错误经历

    万次阅读 2018-09-05 10:45:33
    Http的Get/Post请求带有特殊字符,400 Bad Request解决方案 今天做项目的时候,需要向服务器接口 传递 json参数,使用 apache 的 httpclient,当时没有对参数做特殊处理直接提交了,结果运行时报错了,如下: HTTP...

    一、先引用一下别的处理方案

    HttpGet/Post请求带有特殊字符,400 Bad Request解决方案

    今天做项目的时候,需要向服务器接口 传递 json参数,使用 apache httpclient,当时没有对参数做特殊处理直接提交了,结果运行时报错了,如下:

    HTTP 400 Bad Request

    后来在网上查资料找到原因了:HttpGet HttpPost都不能传包含“{“”}”这样的参数,需要对特殊字符进行转义,把转成%22,把 { 转成%7b,把 } 转成%7d

    1.    String url = "http://127.0.0.1:9000/signal/Resource?param={\"name\":\"service1\",\"param\":{\"id\":\"1\"}}";
    2.    url = url.replace("\"", "%22").replace("{", "%7b").replace("}", "%7d");      

    注意:参数里面如果有 空格的话,也需要转义,否则会有问题。

    二、使用火狐程序员调试工具试了一下,确实有作用了。

    本地原来post方法的url:http://url?gridConditions={},返回http400 bad request

    修改为

    http://url?gridConditions=%7B%7D ,正常 返回200

    三、但是其他同事机器运行的程序没有问题

    四、从本地继续测试,跟踪tomcat console后台

    发现后台报错:

    java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986

        at org.apache.coyote.http11.InternalInputBuffer.parseRequestLine(InternalInputBuffer.java:189)

        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1000)

        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)

        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)

        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

        at java.lang.Thread.run(Thread.java:745)

    五、直接百度:

    Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986

    找到一篇文章

    https://www.cnblogs.com/fxl-njfu/p/7485179.html

     

    Tomcat换一个低一点的版本可以!这是因为高一点的Tomcat版本对URL有更严格的要求,当你的URL中包含了超出RFC 7230RFC 3968所定义的字符时,就会报错。

    本地使用的是tomcat7.0.73,正常运行的使用的是toamcat7.0.47

    回测后,页面返回正常。

     

     

    展开全文
  • HTTP 400错误

    千次阅读 2019-03-12 17:26:23
    向后端发送ajax请求时,当出现http 400错误-请求无效(bad request); 首先,请求没有进入到后端的服务里, 问题一般出现在前端代码里: 1.前端提交的数据字段名称和后端获取的不一致 2.前端提交的数据类型,和...

    向后端发送ajax请求时,当出现http 400错误-请求无效(bad request);

    首先,请求没有进入到后端的服务里,

    问题一般出现在前端代码里:
    1.前端提交的数据字段名称和后端获取的不一致

    2.前端提交的数据类型,和Content-Type中设置的类型不符,应该是json字符串,但是传的是json对象

    开发中常见的小坑,这里记录一下~

    展开全文
  • HTTP 400 错误

    千次阅读 2019-02-01 16:08:10
    HTTP 400 错误 - 请求无效 (Bad request) 在ajax请求后台数据时有时会报 HTTP 400 错误 - 请求无效 (Bad request);出现这个请求无效报错说明请求没有进入到后台服务里; 原因:1)前端提交数据的字段名称或者是...

    HTTP 400 错误 - 请求无效 (Bad request)

    在ajax请求后台数据时有时会报 HTTP 400 错误 - 请求无效 (Bad request);出现这个请求无效报错说明请求没有进入到后台服务里;

    原因:1)前端提交数据的字段名称或者是字段类型和后台的实体类不一致,导致无法封装;

             2)前端提交的到后台的数据应该是json字符串类型,而前端没有将对象转化为字符串类型;

    解决方案:

    1)对照字段名称,类型保证一致性

    2)使用stringify将前端传递的对象转化为字符串    data: JSON.stringify(param)  ;

     

    转载地址:https://www.cnblogs.com/beppezhang/p/5824986.html

    展开全文
  • http 400错误解决

    万次阅读 2018-05-08 13:23:14
    产品上线后,在试单过程中,出现一个硬bug,我们系统接入的是百度系统,出现一个http 400错误,这硬bug难倒10几个英雄汉。接下来描述下问题,及我们解决问题的方法及教训: 我们的系统与百度系统是专线访问通道,...

    产品上线后,在试单过程中,出现一个硬bug,我们系统接入的是百度系统,出现一个http 400错误,这硬bug难倒10几个英雄汉。接下来描述下问题,及我们解决问题的方法及教训:

    我们的系统与百度系统是专线访问通道,在上线前肯定确保应用系统是没问题的。双方的访问时基于http协议,接口对接。

    访问流程是:百度应用发出一条命令,经过百度网关,然后到达我们的负载,然后是网关,最后转发到应用系统。

    问题来了:在百度发出命令后,通过专线到达我们的网关后,我们网关服务器上部署的Apache报出400错误,应用系统没有打印任何日志。

    然后我们就找原因:

    思考1.400是谁报出来的,已确定只要到达应用,应用就会打印日志,目前应用没有打印日志,就不是应用层;网关的Apache的error没有相关日志,只有正常access文件中有访问日志,那就说明我们的Apache没有坏。但是网关服务器只做转发功能,不做任何报文的转换。

    为了排除我们这边的原因,我们做了以下测试:

    测试1.使用curl命令,网关IP,正常的报文,从网关自我访问。发现应用层能够正常打印日志。排除了网关向应用层转发错误的可能。

    测试2.使用curl命令,负载IP,正常的报文,从负载上自我访问。发现应用层能够正常打印日志。排除了负载向网关转发错误的可能。

    测试3.使用curl命令,正确的URL,报文错误的参数,从负载上自我访问。发现应用层能够正常打印日志。排除了报文错误的可能。


    思考2.网上查资料,看到400错误可能的原因:1.http版本不一致;2.报文过长;3.报文内容类型与报文内容不匹配(content-type:form与json)。我们观察百度发来的报文与其他合作商发来的报文的区别,发现版本号确实不一致,报文也不短,有1000多字节。然后就自我访问,按照网上资料可能的错误原因进行测试:

    测试4.使用curl命令,负载IP,正常的URL,http版本换成百度报文中的版本。发现应用层能够正常打印日志。排除了http版本错误的可能。

    测试5.使用curl命令,负载IP,正常的URL,报文长度到达5000字节。发现应用层能够正常打印日志。排除了报文过长的可能。

    测试6.使用curl命令,负载IP,正常的URL,将form类型的报文,在content-type中修改为json。发现应用层能够正常打印日志。排除了报文参数值错误的可能。


    思考3.经过这些测试,我们基本确定不是应用的问题,而是应用前后各种报文转换配置的问题,那么到底是哪里的出错了呢?然后我们与百度方沟通,是否是在传递命令时,百度方的网关或我们的网关有添加或修改报文。

    然后我们猜测是否在网络传输过程丢包了。然后我们就进行抓包测试,从百度发命令,我们在我们的网关入口抓包。经对比分析,没有丢失任何内容。


    思考4.那么问题到底在哪,双方几个大拿,开会讨论,确定测试方案。我们既然找不出原因,那么就抽丝剥茧,像剥洋葱一样,从外向里拨,一点点排除各环节的错误。

    先写一个简单的页面,以防影响其他的业务,防止业务应用报出错误混淆这个400,便于查看返回数据。

    首先是网关对网关,将页面部署到网关Apache上。从百度网关访问我们网关。结果能够正常返回页面数据;排除网关对网关访问异常。

    然后是网关对应用,将页面部署到应用服务器上的Tomcat上。从百度网关访问我们的网关,结果能正常返回页面数据;排除网关正常访问我们的应用异常。

    最后是应用对应用,将页面部署到应用服务器上的Tomcat上。从百度应用访问我们的网关,结果报出http-400错误;问题定位:百度应用发出的命令经过百度网关后,转换了报文,导致我们的网关直接报错。

    到目前为止,已经过去4天了。我们终于将范围缩小到百度应用到百度网关加了什么东西,让我们的系统识别失败。


    问题终于找到了。在第5天时,百度人终于找到了问题:

    “1.我们在接收http请求时,网关按照header里的 host 字段来进行了一次过滤,过滤的方式应该是正则匹配了ip
    2.百度的proxy在转发时host改写为nginx upstream的名字,和我们的网关过滤不匹配”



    教训

    这次找bug事件中我得出了一些教训:

    1.不要总找自身原因。

    2.加强沟通

    3.解决问题要有调理。有调理的,像剥洋葱一样,一点点剖析、排除问题。

    4.什么职位做什么事,既然是产品经理就不要试图指挥技术解决技术的问题。

    5.提高双方的配合度。



    
    
    
    展开全文
  • ajax请求http400错误的几种解决方法

    千次阅读 2020-08-24 14:20:17
    参数的类型对应错误三、情况三(post请求下后端接收的值为空)总结 前言 ssm项目使用ajax的post请求400 一、情况一(参数数量不对应) 后端接受的参数和前端传入参数的数量不一致 验证方法 打开浏览器开发者工具 ...
  • HTTP400错误 请求无效 (Bad request)

    万次阅读 2019-07-01 18:28:58
    HTTP 400 Bad Request 响应状态码表示由于语法无效,服务器无法理解该请求。 客户端不应该在未经修改的情况下重复此请求。 出现这个请求无效报错说明请求没有进入到后台服务里 可能的原因: 首先确定请求接口连接...
  • 问题查看: 解决Nginx 400 Bad Request问题的一些思路 解决办法: Nginx的client_header_buffer_size和large_client_header_buffers学习
  • http 400错误

    2019-05-24 14:27:00
    结果一直报400错误。 后台springMVC方法(int id)接收时数据一直匹配不上,后来改成用request.getParameter("id"),才不报错成功跳转进方法 转载于:https://www.cnblogs.com/cslgzl/p/10917991.html...
  • 原因 nginx反向代理非80、8080端口会出现端口丢失的情况 解决 添加 proxy_set_header Host $host:$server_port; 即可 upstream f5 { server 172.16.31.222:1962;... proxy_pass http://f5; } }
  • http 400错误

    千次阅读 2020-09-03 23:19:10
    今天和客户端调http接口,一个http请求报400,经过仔细检查发现,客户端传的字符串带空格,然后你没有去处理这个字符串,直接拿来请求第三方,直接报400错误。虽然客户端传过来的是字符串,但是拼接到url里面,空格...
  • 服务器中的错误记录类似于这种: 124.65.133.242 – – [27/Oct/2014:14:30:51 +0800] “-” 400 0 “-” “-” 124.65.133.242 – – [27/Oct/2014:14:31:45 +0800] “-” 400 0 “-” “-” 124.65.133.242 – –...
  • springmvc 关于http400错误的记录

    千次阅读 2017-12-11 13:24:09
    昨天在进行企业微信开发时,遇到了http400错误,在我的10余年计算机从业生涯中第一次碰到400错误。但我知道和404错误同在一个类别,就是同属4开头的错误,肯定不是语法方面的错误。但具体我也不知道是什么错误,网上...
  • 在服务端nginx日志中发现该接口出现400错误 解决 首先检查了nginx配置是否正确 检查无误后 使用curl命令直接调用该接口 发现正常 排除了服务端的错误后 会到客户端代码内检查 发现method这一参数填写了”Post” ...
  • 在下载文件时,出现Http400错误,浏览器报错界面如下: 确定你的下载地址无特殊字符,且已经进行了UTF-8编码,那么可通过以下方式处理问题。 1.如果请求下载地址过长导致,可通过更改注册表里面的值,解决方式...
  • HTTP 400 错误 - 请求无效 (Bad request)

    万次阅读 2016-08-31 10:45:00
    在ajax请求后台数据时有时会报HTTP 400 错误 - 请求无效 (Bad request);出现这个请求无效报错说明请求没有进入到后台服务里; 原因:1)前端提交数据的字段名称或者是字段类型和后台的实体类不一致,导致无法封装;...
  • 我写的程序在myeclipse中是可以正常运行的,明明启动了myeclipse自带的tomcat却在浏览器中不能出现小猫图案,并且报错http400错误。之前myeclipse是可以正常使用的,后来被我给改坏了,求大神帮帮忙。![图片]...
  • AJAX请求返回HTTP 400 错误

    千次阅读 2018-11-14 09:42:01
    在ajax请求后台数据时有时会报HTTP400错误-请求无效(Badrequest);出现这个请求无效报错说明请求没有进入到后台服务里; 原因:    1)前端提交数据的字段名称或者是字段类型和后台的实体类不一致,导致无法封装...
  • SpringBoot踩坑记(HTTP 400 错误

    万次阅读 2019-05-07 02:32:36
    HTTP 400 错误复现错误ajax请求后台数据时有时会报 HTTP 400 错误 - 请求无效 (Bad request);出现这个请求无效报错说明请求没有进入到后台服务里;原因:1)前端提交数据的字段名称或者是字段类型和后台的实体类不...
  • 最近遇到了http 400错误

    千次阅读 2017-07-12 22:28:07
    最近遇到了http400错误, 查了一下, 都说是bad request, 那肯定就是客户端的问题吗?  经对比排查, 发现是http请求中的origin所致, 如果把origin中的https改为http, 就OK, 否则就是必现400  于是, 我怀疑...
  • http 请求 400 错误

    千次阅读 2018-05-14 15:19:50
    遇到过两次 http 400 请求错误的问题,两次都是同样的原因造成的。客户端给服务器端传参数的时候,参数类型无法转换的时候就会报 400 错误。比如服务器端定义了一个整型的参数: private int price; 客户端在传...
  • Spring Boot 项目,请求有中文的时候 IE 链接报 400 错误,只有 IE 报这个错误,其余谷歌浏览器或者谷歌内核浏览器不报这个错误,这很显然是因为中文问题,果然,将中文使用 encodeURI 转码之后,就可以了,因为谷歌...
  • Restful数据访问出现HTTP 400错误 解决

    千次阅读 2016-10-20 14:22:28
    遇到一个头疼的问题,后台只有实体类和Repository,没有Controller和Service,Rest直接提供一个实体类名称访问至数据库,但是昨天在做的时候用Ext提交一个POST请求,出现了400错误。 ext代码: var formvalues = ...
  • 报错: 原因: 这时候我将谷歌浏览器中打开的url和IE浏览器中的url互相复制到文本里面...http://localhost:8080/ekp/tonly/sediment/tonly_sediment_pmain/tonlySedimentPmain.do?method=addPList&selecte...
  • 但是每次发送之后都会出现http 400错误,并且还会显示Invalid HTTP_HOST header,如下 > Invalid HTTP_HOST header: 'localhost:8000,localhost'. The domain name provided i > s not valid according to RFC ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 145,308
精华内容 58,123
关键字:

http400错误