Internet explorer IE使用XMLHttpRequest在重定向时发送错误的内容类型

Internet explorer IE使用XMLHttpRequest在重定向时发送错误的内容类型,internet-explorer,redirect,post,xmlhttprequest,multipartform-data,Internet Explorer,Redirect,Post,Xmlhttprequest,Multipartform Data,这是我第一次直接使用XMLHttpRequest。希望有人能给我一个提示 情景: 我正在尝试使用XMLHttpRequest将文件上载到服务器。为此,我: 使用XMLHttpRequest将表单(多部分)发布到我的服务器。这个职位工作如期;文件已上载,未显示任何错误 然后我的服务器用重定向进行响应。我可以看到Internet Explorer使用GET执行重定向,但内容类型仍然是“multipart”(从第一个请求开始)。这会导致我的服务器崩溃。内容类型设置为multipart,但不发送要分析的

这是我第一次直接使用XMLHttpRequest。希望有人能给我一个提示

情景: 我正在尝试使用XMLHttpRequest将文件上载到服务器。为此,我:

使用XMLHttpRequest将表单(多部分)发布到我的服务器。这个职位工作如期;文件已上载,未显示任何错误

然后我的服务器用重定向进行响应。我可以看到Internet Explorer使用GET执行重定向,但内容类型仍然是“multipart”(从第一个请求开始)。这会导致我的服务器崩溃。内容类型设置为multipart,但不发送要分析的实际信息

完全相同的代码在Chrome和Firefox中工作得很好,但在IE中却不行

HTML表单

<form action="my path" enctype="multipart/form-data" method="post">
  <input  name="import[my_file]" type="file">
</form>

ROR代码非常简单

class MyController < ApplicationController

  def my_action
    file = params[:import][:my_file]
    ...
    redirect_to :action => :other_action
  end

  def other_action
    render :text => 'Just an ilustration'
  end
end
class MyController:其他操作
结束
def其他行动
render:text=>“只是一个说明”
结束
结束
Javascript代码

var form = $('<The form containing the file input>')[0];
var formData = new FormData(form);
var url = $(this).attr('action');

var request = new XMLHttpRequest();
var response = request.open('POST', url, true);

request.onreadystatechange = function() {
  if (request.readyState == XMLHttpRequest.DONE) {
    // Code when it is done
  }
}

request.send(formData);
return false;
var form=$('')[0];
var formData=新formData(表格);
var url=$(this.attr('action');
var request=new XMLHttpRequest();
var response=request.open('POST',url,true);
request.onreadystatechange=函数(){
if(request.readyState==XMLHttpRequest.DONE){
//完成后编写代码
}
}
请求。发送(formData);
返回false;
这两个请求:上传文件的POST和重定向的GET:

以下是帖子标题、请求和响应:

这些是GET头、请求和响应。您可以看到内容类型如何设置为multipart formdata,这是不正确的

为了确保重定向和XMLHttpRequest是这个问题的“原因”,我去掉了XMLHttpRequest代码,让表单正常运行。重定向的GET调用具有正确的内容类型(text/html)。它工作正常

你知道我能做些什么来让IE使用XMLHttpRequest在帖子之后的重定向的GET请求中使用正确的内容类型吗


(对于超长的帖子很抱歉)

只是一个随机快照,但是您是否尝试过将表单的
编码属性设置为
“多部分/表单数据”
?您可能应该使用。它特别指出:“主要用于允许POST操作的输出将用户代理重定向到选定的资源,因为这样做以一种独立于原始请求的形式提供了与POST响应相对应的信息,可以单独识别、添加书签和缓存。”@idbehold感谢您的评论。我试着用303,得到了同样的结果。重定向(GET)的内容类型仍然是多部分。仍然得到相同的错误。我甚至试过使用这个[列表]()(300、301、302、303、304、305、307)中的状态码。对于其中一些,浏览器不会跟随URL,但我认为这是意料之中的。但当它真的出现时,内容类型仍然是多部分的。@stevenelberger感谢您的回复。我不确定我是否完全理解你的建议。你的意思是让表格看起来像这样<代码>
我也试过了。。不走运..jquery默认设置ajax请求的内容类型,可能是因为这个原因?