1

次のコードでファイルからxmlを取得しています..

var uploadInfo = context.Request.Files[0];
                var uploadStream = uploadInfo.InputStream;
                var upload = new byte[uploadInfo.ContentLength];
                uploadStream.Read(upload, 0, uploadInfo.ContentLength);
                var payload = System.Text.Encoding.UTF8.GetString(upload);

                context.Response.ContentType = "text/plain";
                context.Response.Write(payload);

この時点で、xml は次のようになります。

<?xml version="1.0"?>  
 <AData>
 <DataElement name="Comments" type="String"></DataElement> 
 <DataElement name="ModAuthor" type="String"></DataElement>  
 <DataElement name="CreateDate" type="Datetime"></DataElement>    
 <DataElement name="Author" type="String"></DataElement>   
 </AData>

このコードでハンドラーを呼び出しています..

  $.ajaxFileUpload({

                url: 'AjaxFileUploader.ashx',
                secureuri: false,
                fileElementId: 'fileToUpload',
                dataType: 'text',
                success: function (data, status) {

                    alert(data);

                },

                error: function (data, status, e) {
                    alert(e);
                }

            }

クロムではすべて問題ありませんが、IE でテストすると、success メソッドは次の結果を返します。

<DIV class=e><SPAN class=b>&nbsp;</SPAN> <SPAN class=m>&lt;?</SPAN><SPAN class=pi>xml version="1.0" </SPAN><SPAN class=m>?&gt;</SPAN> </DIV>
<DIV class=e>
<DIV style="TEXT-INDENT: -2em; MARGIN-LEFT: 1em" class=c><A class=b onfocus=h() onclick="return false" href="#">-</A> <SPAN class=m>&lt;</SPAN><SPAN class=t>AData</SPAN><SPAN class=m>&gt;</SPAN></DIV>
<DIV>
<DIV class=e>
<DIV style="TEXT-INDENT: -2em; MARGIN-LEFT: 1em"><SPAN class=b>&nbsp;</SPAN> <SPAN class=m>&lt;</SPAN><SPAN class=t>DataElement</SPAN> <SPAN class=t>name</SPAN><SPAN class=m>="</SPAN><B>Comments</B><SPAN class=m>"</SPAN><SPAN class=t> type</SPAN><SPAN class=m>="</SPAN><B>String</B><SPAN class=m>"</SPAN><SPAN class=m> /&gt;</SPAN> </DIV></DIV>
<DIV class=e>
<DIV style="TEXT-INDENT: -2em; MARGIN-LEFT: 1em"><SPAN class=b>&nbsp;</SPAN> <SPAN class=m>&lt;</SPAN><SPAN class=t>DataElement</SPAN> <SPAN class=t>name</SPAN><SPAN class=m>="</SPAN><B>ModAuthor</B><SPAN class=m>"</SPAN><SPAN class=t> type</SPAN><SPAN class=m>="</SPAN><B>String</B><SPAN class=m>"</SPAN><SPAN class=m> /&gt;</SPAN> </DIV></DIV>
<DIV class=e>
<DIV style="TEXT-INDENT: -2em; MARGIN-LEFT: 1em"><SPAN class=b>&nbsp;</SPAN> <SPAN class=m>&lt;</SPAN><SPAN class=t>DataElement</SPAN> <SPAN class=t>name</SPAN><SPAN class=m>="</SPAN><B>CreateDate</B><SPAN class=m>"</SPAN><SPAN class=t> type</SPAN><SPAN class=m>="</SPAN><B>Datetime</B><SPAN class=m>"</SPAN><SPAN class=m> /&gt;</SPAN> </DIV></DIV>
<DIV class=e>
<DIV style="TEXT-INDENT: -2em; MARGIN-LEFT: 1em"><SPAN class=b>&nbsp;</SPAN> <SPAN class=m>&lt;</SPAN><SPAN class=t>DataElement</SPAN> <SPAN class=t>name</SPAN><SPAN class=m>="</SPAN><B>Author</B><SPAN class=m>"</SPAN><SPAN class=t> type</SPAN><SPAN class=m>="</SPAN><B>String</B><SPAN class=m>"</SPAN><SPAN class=m> /&gt;</SPAN> </DIV></DIV>
<DIV><SPAN class=b>&nbsp;</SPAN> <SPAN class=m>&lt;/</SPAN><SPAN class=t>AData</SPAN><SPAN class=m>&gt;</SPAN></DIV></DIV></DIV>

ハンドラー コードから取得した xml の文字列を単純に返すためにできることはありますか? クロムで問題なくxmlを返しますが、IEはhtmlとスタイルのように見えるものを自動的に提供しています。

4

1 に答える 1

0

X-Content-Type-Options: nosniffヘッダーを追加してみてください:
http://blogs.msdn.com/b/ie/archive/2008/07/02/ie8-security-part-v-comprehensive-protection.aspx

context.Response.ContentType = "text/plain";
context.Response.AppendHeader("X-Content-Type-Options", "nosniff");
于 2013-03-14T14:21:21.233 に答える