gpt4 book ai didi

javascript - IE11 FormData AJAX Post with File 在 401 后挂起

转载 作者:行者123 更新时间:2023-11-30 06:53:09 26 4
gpt4 key购买 nike

在 IE11 中,我使用 ajax 将 FormData 元素发布到经过 Windows 身份验证的端点 (IIS7.5 NTLM)。如果 FormData 元素仅包含文本字段,则一切正常 - 初始请求导致 401 并且有效负载在携带凭据/有效负载的后续请求中传递。

但是,如果 FormData 对象中有 File 输入,这会起作用。如果FormData对象中有文件,IE11会发送请求,得到401,然后根本不发送后续请求。 (注意——它确实在 FF/Chrome 中工作)

代码:

// This works
var fd = new FormData();
fd.append("CaseId", 1188);
fd.append("PhaseId", 6);

// Adding this element to the FD makes IE11 hang
// but still works in FF & Chrome
fd.append("MyFile", document.getElementById("MyFileInput").files[0]);

$.ajax({
url : "myEndpoint.ashx",
type : "POST",
data : fd,
contentType : false, // do not to adjust content-type
processData : false, // do not to convert raw data to string
success : function(data){
console.log("Hooray!");
},
error : function(xhr){
console.log("Boo");
}
});

我已经检查了在 Fiddler 中有/没有文件输入的请求 header ,401 请求/响应在各个方面都是相同的。

这是工作请求(无文件输入)。此请求之后的后续请求包括凭据并导致 200

POST http://example.com/myEndpoint.ashx HTTP/1.1
X-Requested-With: XMLHttpRequest
Accept: */*
Content-Type: multipart/form-data; boundary=---------------------------7df11b0308d6
Referer: http://example.com/IE11FormDataTest.html
Accept-Language: en-US
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.3; MS-RTC LM 8)
Connection: Keep-Alive
Host: example.com
Pragma: no-cache
Cookie: ASP.NET_SessionId=mqa12rwnmxerfoz3csx0wohk
Authorization: NTLM TlRMTVNTUAABAAAAB4IIogAAAAAAAAAAAAAAAAAAAAAGAbEdAAAADw==
Content-Length: 0

这是不起作用的请求(文件输入包含在 FormData 对象中)。返回时,IE11 无法发出后续的经过身份验证的请求。事实上,选项卡的标题只是说“等待 mysite.com...”:

POST http://example.com/myEndpoint.ashx HTTP/1.1
X-Requested-With: XMLHttpRequest
Accept: */*
Content-Type: multipart/form-data; boundary=---------------------------7df2c7308d6
Referer: http://example.com/IE11FormDataTest.html
Accept-Language: en-US
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.3; MS-RTC LM 8)
Connection: Keep-Alive
Host: example.com
Pragma: no-cache
Cookie: ASP.NET_SessionId=mqa12rwnmxerfoz3csx0wohk
Authorization: NTLM TlRMTVNTUAABAAAAB4IIogAAAAAAAAAAAAAAAAAAAAAGAbEdAAAADw==
Content-Length: 0

有人看到我可能遗漏的任何内容或对我可以运行/创建的测试有任何建议吗?我用原始 XMLHttpRequest 尝试过同样的事情,但结果是一样的。

最佳答案

问题似乎出在最后附加的文件数据上。如果我将另一个键值对附加到表单数据,这个问题就解决了。

此链接为我指明了正确的方向 https://blog.yorkxin.org/posts/2014/02/06/ajax-with-formdata-is-broken-on-ie10-ie11/

关于javascript - IE11 FormData AJAX Post with File 在 401 后挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28228178/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com