记解决一次“HTTP Error 400. The request URL is invalid”的错误

今天将图片服务切到使用了cdn的机器上面去,然后就部分图片报如下图错误“HTTP Error 400. The request URL is invalid”

看到这种错误信息,一般的开发者心中可能会猜测到两个原因

1.链接中有特殊字符

2.链接长度过长(似乎长度过长也不是这个错,模糊不清,忘记了)

错误图片的地址如下:http://{host}/SearchService.svc/rest/pic600x320/png/kv3hcxmnCmISVvFKojNBGpkN44MRx71vV4v7Qu7ikclbic2vX5Axnm8RxwhLoWyehsSz4J%C2%A72F6h4eQgvkrbzuKGR6y7sszK1KUY75RqxylZMumapwVQttfllaSPXwoRGEeVexDqjmMZSERPquL3uLZbv6Vxdx52nRDUW90SVVYeqkHZbx2w3T1coqt2v036tfaZ%C2%A72D8GBlPbIVJuhSFU5GA8116z8FkV4%C2%A72kDtsxSXy9XTFIziTToRpbQEkp7497O6q99

接下来就开始了按照我们所能遇见的错误原因进行排查

1.查看url,并没有特殊字符(排除这个原因)

2.url咋一看确实很长,那我们删除参数的一半长度再请求。结果是可以成功,然后通过不断的加字符,发现长度超过339就报这个错,而339后面也没啥特殊字符,所以我们基本确定错误原因是应为url过长。

接下来就是解决相关问题

然后就是各种百度,查看相关修改querystring长度限制的配置

然后就修改web.config

1.修改  httpRuntime 节点下面增加  maxQueryStringLength,maxRequestLength配置

<httpRuntime requestPathInvalidCharacters="" requestValidationMode="2.0" maxQueryStringLength="2097151" maxUrlLength="2097151" maxRequestLength="2097151" relaxedUrlToFileSystemMapping="true" executionTimeout="36000" delayNotificationTimeout="36000" />

  2.修改system.webServer节点,如下

<security>
      <requestFiltering allowDoubleEscaping="true" allowHighBitCharacters="true"  >
        <requestLimits maxAllowedContentLength="2097151" maxQueryString="2097151" maxUrl="2097151" />
      </requestFiltering>
    </security>

满怀期待的保存,运行,错误依旧,好像并没有什么卵用

这个时候就开始纳闷了,为啥不行,会不会没有生效,想到这儿可能就有很多人像我一样,想到了iis的全局设置,会不会该项设置不能被覆盖,我们用的依旧是全部设置的值

不用猜测,查看一下就知道了(注意,查看的requestFiltering是位于 system.webServer下,不要看错节点了)

  <section name="requestFiltering" overrideModeDefault="Allow"  />

如果是关闭的,overrideModeDefault的值是Deny,Allow表示我们该配置会以我们站点具体配置为准。

那么一切都是正常的啊,为啥就是报错呢?!

最后stackoverflow上面一个没有被采纳的回到引起了我的注意

链接 https://stackoverflow.com/questions/8447698/the-request-url-is-invalid-in-iis-7

大致意思是,请求还没到iis,被操作系统干掉了。

这个时候再google上面搜到另外一篇文章,链接到了微软的光放技术支持

地址如下 https://support.microsoft.com/zh-cn/help/820129/http-sys-registry-settings-for-windows

两篇文章的大意都是我们需要修改注册表,综合两篇文章,大概修改是注册表如下两个值

接下来就试一下,进入注册表  CMD =》 regedit=》HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters

右击空白区域,选择Dword值,如图

新建名称 UrlSegmentMaxLength,值设置成2048,然后点击ok

UrlSegmentMaxCount的设置同上,值也是Dword  2048,点击ok.

修改完成只有重启http服务才能生效

  1. 依次单击“开始”、“运行”,键入 Cmd,然后单击“确定”。
  2. 在命令提示符处,键入 net stop http,然后按 Enter。
  3. 在命令提示符处,键入 net start http,然后按 Enter。

然后重启IIS。再试一下,ok了,不报错了,完美解决,在解决问题的过长中,领导给予了不少支持,实际情况不像本文描述的这么简单平凡!

时间: 2024-10-12 19:37:47

记解决一次“HTTP Error 400. The request URL is invalid”的错误的相关文章

火狐浏览器访问网站出现 HTTP Error 400. The request is badly formed.错误,怎么解决

今天在访问某个网站时,出现一个"HTTP Error 400. The request is badly formed."错误, 那么应该如何解决呢? 1.问题描述: 用火狐浏览网站出现""HTTP Error 400. The request is badly formed."错误 2.问题原因: Http error 400错误请求,是客户端问题,跟服务器没关系(也就是本地出问题了) 3.解决方法: 通过清理垃圾.清洁注册表,或检查广告拦截模块及防火墙

WebService:The remote server returned an error: (400) Bad Request

开发工具:VS2010.开发组件:WebService.运行环境:Windows 今天一个同事在进行计费接口联调试时,发现了一个非常奇怪的问题:接口在家里环境测试,一切正常,但是部署到现网环境之后,连续调用几次接口就会出现错误:The remote server returned an error: (400) Bad Request,然后回收一下WebService自己的程序池,再调用又可以了,再连续调用几次,又出现了上面的问题. 他来找我帮忙查问题,在了解整个过程之后,我就直接根据经验,设置

urllib2.HTTPError: HTTP Error 400: Bad Request

1 import urllib2 2 import re 3 import os 4 5 def process_item(self, item, spider): 6 headers = { 7 "Host": 'img31.mtime.cn', 8 "User-Agent": 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:53.0) Gecko/20100101 Firefox/53.0', 9 "

HTTP ERROR 400 Bad Request

一springmvc项目中我新增记录完全ok,编辑就是不行,后台方法进不去.老是报错HTTP ERROR 400 Bad Request. 经过查询,说是400表示请求中的语法错误. 我把新增记录的请求信息拷贝下来,把编辑的请求信息也拷贝下来,然后用notepad++比较两个请求,终于发现原因就是id不匹配.freemarker这个坑货,数字喜欢加逗号分割,9789变成了9,789,所以映射失败了.因为字符串类型肯定无法映射到Integer上去. 在此记录一下.

android模拟器 报错:X Error of failed request: BadRequest (invalid request code or no such operation)

最近在ubuntu12.04上学习python,python2.7 python3.2差别还是蛮大的,就想着学习较新的 升级后 结果出现 输入法不显示   update-manager 和  add-apt-repository不能用,android的模拟器也打不开. 罪魁祸首直至python 因为python3.2没有往上兼容,导致从python2.7升级到3.2 很多依赖之前2.7版本的功能无法使用 如何解决python升级的问题 请 http://book.51cto.com/art/20

Android studio出现Error:Unable to tunnel through proxy. Proxy returns &quot;HTTP/1.1 400 Bad Request&quot;的解决办法

最近更新了一下Android Studio(下文简写成AS),然后打开工程发现出现Error:Unable to tunnel through proxy. Proxy returns "HTTP/1.1 400 Bad Request",如图: 什么鬼.几番折腾,终于知道原因了.直接写解决方案吧. 1.打开设置 2.依次选择图中的第一步,第二步.并设置gradle的目录 3.设置好后应用,并点OK. 4.刷新Gradle 5.运行,错误解决 如果没有gradle,可以到:http:/

Mysql5.7.11 安装 cacti0.8.8f ,在导入cacti.sql数据库时出现下记错误,导致数据库导入终止: ERROR 1067 (42000) at line 1847: Invalid default value for &#39;status_fail_date&#39;

解决方法:vim /etc/my.cnf 文件,加入 : sql-mode="NO_ENGINE_SUBSTITUTION" , Systemctl restart mysqld 进入mysql的之后可执行: select @@sql_mode 查询当前使用的sql_mode是什么 Mysql5.7.11 安装 cacti0.8.8f ,在导入cacti.sql数据库时出现下记错误,导致数据库导入终止: ERROR 1067 (42000) at line 1847: Invalid

报错 POST http://192.168.79.165:8015/marketing/manager 400 (BAD REQUEST) 解决办法

我用jQuery ajax post方法 用flask url_for 传值到后端 $.ajax({ url:"{{url_for('marketing.manager')}}", type:'post', dataType:'json', // data:params, data:{'params':'aResult'}, success:function(data){ // console.log(data) console.log('success') },error:funct

服务器出现 HTTP 400、404、500、502 错误原因以及解决办法

一.基本包含了所有问题 HTTP 400 – 请求无效. HTTP 401.1 – 未授权:登录失败. HTTP 401.2 – 未授权:服务器配置问题导致登录失败. HTTP 401.3 – ACL 禁止访问资源. HTTP 401.4 – 未授权:授权被筛选器拒绝. HTTP 401.5 – 未授权:ISAPI 或 CGI 授权失败. 1.HTTP 403 – 禁止访问 HTTP 403 – 对 Internet 服务管理器 的访问仅限于 Localhost. HTTP 403.1 禁止访问