Internet explorer IE10&;IE11上传失败,无法发送POST数据

Internet explorer IE10&;IE11上传失败,无法发送POST数据,internet-explorer,http,jquery,iis,cgi,Internet Explorer,Http,Jquery,Iis,Cgi,我试图发布一个包含隐藏字段和文件的多部分/表单数据,传输挂起 Web服务器: Windows 2012服务器,运行IIS 8.0 身份验证:启用Windows(协商和NTLM) 客户端: Windows 2008 Server/Windows 2012 Server(本地主机) Internet Explorer 10.0.12 两者都有同样的问题 我在web服务器上运行了一个CGI,我检查以确保它可用并响应,然后我发出一个jQueryAjax请求来发送POST数据。我用Fiddler观察web

我试图发布一个包含隐藏字段和文件的多部分/表单数据,传输挂起

Web服务器: Windows 2012服务器,运行IIS 8.0

身份验证:启用Windows(协商和NTLM)

客户端: Windows 2008 Server/Windows 2012 Server(本地主机) Internet Explorer 10.0.12 两者都有同样的问题

我在web服务器上运行了一个CGI,我检查以确保它可用并响应,然后我发出一个jQueryAjax请求来发送POST数据。我用Fiddler观察web服务器和浏览器的通信(见下图)。它挂起在最后一个请求上,显示的内容长度为500,但没有数据。似乎IE正在等待发送(?)

在Fiddler中,您可以在发送响应之前修改数据。我尝试了这个,但它不允许编辑。似乎它仍在等待IE继续发送。我尝试关闭Windows身份验证并启用匿名,但没有问题。此外,在第一次请求时,我无法再现该问题(它按预期工作),但在后续请求时,它是一致的。Chrome、Firefox或IE9及更早版本没有问题。我无法确定它是浏览器还是web服务器

请求1次CGI检查

POST http://www.example.com/test/mycgi.exe/ABC HTTP/1.1
X-Requested-With: XMLHttpRequest
Accept: */*
Referer: http://www.example.com/test/mycgi2.exe/ABC
Accept-Language: en-US
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)
Connection: Keep-Alive
Content-Length: 0
DNT: 1
Host: www.example.com
Pragma: no-cache

HTTP/1.1 401 Unauthorized
Content-Type: text/html
Server: Microsoft-IIS/8.0
WWW-Authenticate: Negotiate
WWW-Authenticate: NTLM
X-Powered-By: ASP.NET
Date: Fri, 03 Jan 2014 20:29:28 GMT
Content-Length: 1293
Proxy-Support: Session-Based-Authentication

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<title>401 - Unauthorized: Access is denied due to invalid credentials.</title>
<style type="text/css">
<!--
body{margin:0;font-size:.7em;font-family:Verdana, Arial, Helvetica, sans-serif;background:#EEEEEE;}
fieldset{padding:0 15px 10px 15px;} 
h1{font-size:2.4em;margin:0;color:#FFF;}
h2{font-size:1.7em;margin:0;color:#CC0000;} 
h3{font-size:1.2em;margin:10px 0 0 0;color:#000000;} 
#header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet MS", Verdana, sans-serif;color:#FFF;
background-color:#555555;}
#content{margin:0 0 0 2%;position:relative;}
.content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;}
-->
</style>
</head>
<body>
<div id="header"><h1>Server Error</h1></div>
<div id="content">
 <div class="content-container"><fieldset>
  <h2>401 - Unauthorized: Access is denied due to invalid credentials.</h2>
  <h3>You do not have permission to view this directory or page using the credentials that you supplied.</h3>
 </fieldset></div>
</div>
</body>
</html>

请求2篇包含数据和文件的帖子

POST http://www.example.com/test/mycgi.exe/ABC?trid=pxupld HTTP/1.1
X-Requested-With: XMLHttpRequest
Accept: */*
Content-Type: multipart/form-data; boundary=---------------------------7dd3c817903dc
Referer: http://www.example.com/test/mycgi2.exe/ABC
Accept-Language: en-US
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)
Host: www.example.com
DNT: 1
Connection: Keep-Alive
Pragma: no-cache
Authorization: Negotiate TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAGAbEdAAAADw==
Content-Length: 0

HTTP/1.1 401 Unauthorized
Content-Type: text/html; charset=us-ascii
Server: Microsoft-HTTPAPI/2.0
WWW-Authenticate: Negotiate TlRMTVNTUAACAAAAEgASADgAAAAVgonioR3IHBVFoYwAAAAAAAAAAJwAnABKAAAABgLwIwAAAA9MAFIAUwBEAE8ATQBBAEkATgACABIATABSAFMARABPAE0AQQBJAE4AAQAUAFcASQBOAC0AUQBBADIAMAAxADIABAAUAGwAcgBzAGkAbgBjAC4AbwByAGcAAwAqAFcASQBOAC0AUQBBADIAMAAxADIALgBsAHIAcwBpAG4AYwAuAG8AcgBnAAUAFABsAHIAcwBpAG4AYwAuAG8AcgBnAAcACABzQ2OAwgjPAQAAAAA=
Date: Fri, 03 Jan 2014 20:29:28 GMT
Content-Length: 341
Proxy-Support: Session-Based-Authentication

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>Not Authorized</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
<BODY><h2>Not Authorized</h2>
<hr><p>HTTP Error 401. The requested resource requires user authentication.</p>
</BODY></HTML>


挂起等待数据,我想,有什么想法吗?

我的解决方案是停止使用JQUERY创建新表单元素,并使用AJAX提交它。相反,我使用纯javascript提交了一个表单。这是我在IE7和IE8中使用的方法

发生的事情就是这样

  • 您从IIS请求一个页面
  • IIS说“不,您必须进行身份验证(401)。我接受协商和/或NTLM。”(在Windows Auth打开的默认配置中)
  • IE将身份验证标头与您的请求一起发送,IIS将愉快地发回您的页面
  • IE将身份验证附加到它使用的TCP连接上,因此它不必再次向IIS进行身份验证
  • 你四处等待,IE对你感到厌烦,并关闭它保持打开状态的TCP连接(请参阅。不要关闭keep alives)。TCP连接关闭时,所有有趣的Windows身份验证都会消失
  • 最后,您要做的是触发某个二进制负载或多部分/表单数据的XHR POST
  • IE在新的TCP连接上通过Windows身份验证交换
  • IE搞砸了,提交了你的帖子,但没有发送数据。它只是停下来不做。在多部分/表单数据的情况下,客户机和服务器进入了一个胆小鬼游戏,每个人都在等待对方做些什么,IE挂起。对于其他mime类型,我注意到IIS发回408而没有挂起

  • 解决方法:向IIS发送GET或HEAD请求。IE将根据该请求进行身份验证。完成后,发送您的帖子。IE将从GET或HEAD请求(及其丰富的Windows身份验证数据)中为您的帖子回收TCP连接,并正确发送数据。

    此问题已在IE11更新11.0.31()中成功解决:

    在Windows 8.1或Windows 7上尝试在Internet Explorer 11中上载文件时出现“HTTP错误401”错误


    我确实发现了安装免费下载管理器时遇到的其他问题,但我没有将其作为附加组件。您解决过这个问题吗?我有同样的问题,我有同样的问题。我目前正在研究这个问题:我发现这个答案非常不清楚。您仍然可以使用JQuery并通过Windows身份验证上载文件。要停止此问题,您需要做的是在POSTNOP之前发出HEAD或GET请求。我在IE 11上得到了这个错误。我也没有做任何跨域的事情,但仍然启用了另一个建议中的选项。唯一导致这种情况的是401错误。简单的XMLHttpRequest GET和调用send会立即发生异常。这种方法不应该以这种方式失败。我加入了一个Try/Catch来忽略它,然后继续。但是,0的状态是无用的。
    POST http://www.example.com/test/mycgi.exe/ABC HTTP/1.1
    X-Requested-With: XMLHttpRequest
    Accept: */*
    Referer: http://www.example.com/test/mycgi2.exe/ABC
    Accept-Language: en-US
    Accept-Encoding: gzip, deflate
    User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)
    Connection: Keep-Alive
    Content-Length: 0
    DNT: 1
    Host: www.example.com
    Pragma: no-cache
    Authorization: Negotiate TlRMTVNTUAADAAAAGAAYAJgAAABEAUQBsAAAABIAEgBYAAAAEAAQAGoAAAAeAB4AegAAABAAEAD0AQAAFYKI4gYBsR0AAAAPuaPj4eFf7hfIoOiAvf0/xWwAcgBzAGQAbwBtAGEAaQBuAGMAcgBhAHcAZgBvAHIAZABXAEkATgAtAEIARAA3ADUANgBJAFAANgA0AE8ARwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdKgld6FBtRxfUcAQJS6yPAQEAAAAAAABOH1yAwgjPAQcXz+RFuDKzAAAAAAIAEgBMAFIAUwBEAE8ATQBBAEkATgABABQAVwBJAE4ALQBRAEEAMgAwADEAMgAEABQAbAByAHMAaQBuAGMALgBvAHIAZwADACoAVwBJAE4ALQBRAEEAMgAwADEAMgAuAGwAcgBzAGkAbgBjAC4AbwByAGcABQAUAGwAcgBzAGkAbgBjAC4AbwByAGcABwAIAE4fXIDCCM8BBgAEAAIAAAAIADAAMAAAAAAAAAAAAAAAADAAAEa6q+B5Lu1yFWYA3Wkqf+iAxY/qnzwZi2pgk0t1XqKNCgAQAAAAAAAAAAAAAAAAAAAAAAAJACAASABUAFQAUAAvADEAMAAuADkANgAuADgALgAxADgANgAAAAAAAAAAAAAAAADYL8orn+roxnPVhMNa1G0w
    
    HTTP/1.1 200 OK
    Content-Type: text/html
    Server: Microsoft-IIS/8.0
    Persistent-Auth: true
    X-Powered-By: ASP.NET
    Date: Fri, 03 Jan 2014 20:29:28 GMT
    Connection: close
    Content-Length: 0
    
    POST http://www.example.com/test/mycgi.exe/ABC?trid=pxupld HTTP/1.1
    X-Requested-With: XMLHttpRequest
    Accept: */*
    Content-Type: multipart/form-data; boundary=---------------------------7dd3c817903dc
    Referer: http://www.example.com/test/mycgi2.exe/ABC
    Accept-Language: en-US
    Accept-Encoding: gzip, deflate
    User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)
    Host: www.example.com
    DNT: 1
    Connection: Keep-Alive
    Pragma: no-cache
    Authorization: Negotiate TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAGAbEdAAAADw==
    Content-Length: 0
    
    HTTP/1.1 401 Unauthorized
    Content-Type: text/html; charset=us-ascii
    Server: Microsoft-HTTPAPI/2.0
    WWW-Authenticate: Negotiate TlRMTVNTUAACAAAAEgASADgAAAAVgonioR3IHBVFoYwAAAAAAAAAAJwAnABKAAAABgLwIwAAAA9MAFIAUwBEAE8ATQBBAEkATgACABIATABSAFMARABPAE0AQQBJAE4AAQAUAFcASQBOAC0AUQBBADIAMAAxADIABAAUAGwAcgBzAGkAbgBjAC4AbwByAGcAAwAqAFcASQBOAC0AUQBBADIAMAAxADIALgBsAHIAcwBpAG4AYwAuAG8AcgBnAAUAFABsAHIAcwBpAG4AYwAuAG8AcgBnAAcACABzQ2OAwgjPAQAAAAA=
    Date: Fri, 03 Jan 2014 20:29:28 GMT
    Content-Length: 341
    Proxy-Support: Session-Based-Authentication
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
    <HTML><HEAD><TITLE>Not Authorized</TITLE>
    <META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
    <BODY><h2>Not Authorized</h2>
    <hr><p>HTTP Error 401. The requested resource requires user authentication.</p>
    </BODY></HTML>
    
    POST http://www.example.com/test/mycgi.exe/ABC?trid=pxupld HTTP/1.1
    X-Requested-With: XMLHttpRequest
    Accept: */*
    Content-Type: multipart/form-data; boundary=---------------------------7dd3c817903dc
    Referer: http://www.example.com/test/mycgi2.exe/ABC
    Accept-Language: en-US
    Accept-Encoding: gzip, deflate
    User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)
    Host: www.example.com
    Content-Length: 500
    DNT: 1
    Proxy-Connection: Keep-Alive
    Pragma: no-cache
    Authorization: Negotiate TlRMTVNTUAADAAAAGAAYAJgAAABEAUQBsAAAABIAEgBYAAAAEAAQAGoAAAAeAB4AegAAABAAEAD0AQAAFYKI4gYBsR0AAAAPbaRPHPhdB+KO+QMFMSieX2wAcgBzAGQAbwBtAGEAaQBuAGMAcgBhAHcAZgBvAHIAZABXAEkATgAtAEIARAA3ADUANgBJAFAANgA0AE8ARwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUat4cr34A16p/u9YeXYBAAQEAAAAAAABzQ2OAwgjPAVb+mEX8/lPwAAAAAAIAEgBMAFIAUwBEAE8ATQBBAEkATgABABQAVwBJAE4ALQBRAEEAMgAwADEAMgAEABQAbAByAHMAaQBuAGMALgBvAHIAZwADACoAVwBJAE4ALQBRAEEAMgAwADEAMgAuAGwAcgBzAGkAbgBjAC4AbwByAGcABQAUAGwAcgBzAGkAbgBjAC4AbwByAGcABwAIAHNDY4DCCM8BBgAEAAIAAAAIADAAMAAAAAAAAAAAAAAAADAAAEa6q+B5Lu1yFWYA3Wkqf+iAxY/qnzwZi2pgk0t1XqKNCgAQAAAAAAAAAAAAAAAAAAAAAAAJACAASABUAFQAUAAvADEAMAAuADkANgAuADgALgAxADgANgAAAAAAAAAAAAAAAAAQcolcJBPzOWjm8V7iJiki