隐藏

服务器提交了协议冲突. Section=ResponseHeader Detail=CR 后面必须是 LF

发布:2014/12/11 10:33:04作者:管理员 来源:本站 浏览次数:2343

提示:服务器提交了协议冲突.Section=ResponseHeader Detail=CR 后面必须是LF

image

图1-1

如果你的是C#编写的程序,可以在config文件中加入图1-2红框中的代码,问题解决了。解决办法来源:“http://blog.csdn.net/mingwar/article/details/5870431”

image

图1-2

百度了一下CR与LF

CR等于回车(\r),LF等于换行(\n)

在HTTP协议中HTTP Header请求信息中的每一行都必须是在CRLF来结束。

服务器检测到你提交的请求不符合HTTP协议的这个规定,所以拒绝了你的请求。

在“HTTP Header 详解”这篇文章中大概了解到http header内容的大体分为Request和Response两部分。

又在“深入理解HTTP协议”中的“1.6头域”章节的配图4、5中了解到无论是http header的请求(Request)信息,还是响应信息(Response)信息都必须遵循“CRLF结束”这个规定。

所以就很好奇究竟是哪一个部分产生出了不符合HTTP协议的格式的信息,是在http header的请求(Request)部分,还是响应信息(Response)部分呢?

是我提交的header的格式没有按照“CRLF结尾”的规定,还是服务器根据我提交的heaer所产生的响应header没有按照“CRLF结尾”的规定?

从图1-1中异常信息中的关键字是ResponseHeader,通过这个关键字我找到了“HTTP Response Header Fields”

未完待续。。。。对HTTP协议有点兴趣了,哈哈 前不久我还买了本《HTTP权威指南》,我觉得这本书应该能解答我一点疑问,就算不能,也能让我对HTTP协议的一些细节有个大概的了解,可惜刚好遇到这个问题的时候,这本书不在身边。


“/”应用程序中的服务器错误。

服务器提交了协议冲突. Section=ResponseHeader Detail=CR 后面必须是 LF

说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Net.WebException: 服务器提交了协议冲突. Section=ResponseHeader Detail=CR 后面必须是 LF

源错误:

执行当前 Web 请求期间生成了未经处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

堆栈跟踪:

[WebException: 服务器提交了协议冲突. Section=ResponseHeader Detail=CR 后面必须是 LF]
   System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& request) +283
   System.Net.WebClient.DownloadData(Uri address) +100
   System.Net.WebClient.DownloadData(String address) +29
   _Default.Page_Load(Object sender, EventArgs e) +106
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +85
   System.Web.UI.Control.OnLoad(EventArgs e) +74
   System.Web.UI.Control.LoadRecursive() +120
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2847

<system.net>
    <settings>
      <httpwebrequest useunsafeheaderparsing="true">
    </httpwebrequest></settings>
  </system.net>