2012-12-18 5 views
31

파일을 업로드하고 파일의 속성 (이름, 크기 등)에 관한 json 응답을 보내려고합니다. IE를 제외한 모든 브라우저에서 정상적으로 작동합니다.IE에서 Json 응답 다운로드

IE는 JSON을 파일로 다운로드하려고 시도합니다!

나는 IE10을 가지고 있으며 디버거에서 브라우저 모드와 문서 모드를 변경하여 IE7에서 10까지 테스트합니다.

asp.net mvc4를 사용하고 있습니다. 파일 업로드 작업에 HttpPost 속성이 있으며 json 응답을 반환합니다. return Json (myObject);

그리고 여기 내 HTTP 헤더

요청

Key Value 
Request POST /File/UploadFile/ HTTP/1.1 
Accept text/html, application/xhtml+xml, */* 
Referer http://localhost:63903/ 
Accept-Language en-NZ 
User-Agent Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0) 
Content-Type multipart/form-data; boundary=---------------------------7dc1e71330526 
Accept-Encoding gzip, deflate 
Host localhost:63903 
Content-Length 1377002 
DNT 1 
Connection Keep-Alive 
Cache-Control no-cache 

응답

Key Value 
Response HTTP/1.1 200 OK 
Server ASP.NET Development Server/11.0.0.0 
Date Tue, 18 Dec 2012 23:44:19 GMT 
X-AspNet-Version 4.0.30319 
X-AspNetMvc-Version 4.0 
Cache-Control private 
Content-Type application/json; charset=utf-8 
Content-Length 154 
Connection Close 

나는 몇 가지 제안을 시도했지만 있습니다 지금까지 다시 원점으로!

+0

그래서 ... 무엇이 문제입니까? –

+0

내 나쁜 ... IE는 파일로 json을 다운로드하려고 시도합니다. – smehnawal

+1

[IE에서 서버의 json 결과를 열거 나 저장하라는 메시지가 표시 될 수 있습니다] (http://stackoverflow.com/questions/6114360/ie-prompts-to-open) - 또는 - save-json-result-from-server) –

답변

44
당신은 IE가 application/json 내용으로 무엇을 해야할지하지 않기 때문에 text/html로 JSON을 반환해야합니다

..

return Json(myObject, "text/html"); 

확실하지만 (를 작동 할 수 있으며보다 정확한 될 수 없음 이 않는 경우)이 질문은 몇 개월 비록 text/x-json

return Json(myObject, "text/x-json"); 
+13

그리고 우리 선생님은 방금 내 하루를 저장했습니다. 얼마나 오래 전에 IE를 죽일 수 있습니까? – smehnawal

+7

올바른/가장 안전한 콘텐츠 유형은 실제로 "text/plain"입니다. text/html을 사용하고 HTML을 JSON 속성 중 하나의 값으로 반환하면 IE8 이하에서는 응답 내용에 이상한 점이 있습니다. –

+0

@RayNicholus, 그 의미가 ... –

3

사용하여, 나는 생각했다 다른 사람이 ASP.NET MVC 3 or 4을 사용하고 있고이 문제가 발생하는 경우를 대비해서 한 가지 제안을 추가하겠습니다.

내 경험에 따르면 IE에서 파일로 Json 응답을 다운로드하려고하면 문제를 해결하기 위해 수행해야하는 작업은보기에 jquery.unobtrusive에 대한 참조를 추가하는 것입니다. 예를 들어

이 일단

@Scripts.Render("~/Scripts/jquery.unobtrusive-ajax.min.js") 

는 더 이상 JsonResult의 컨트롤러 액션에서 JSON 응답을 다운로드하려고하지 않습니다 장소 IE에 있습니다. 응답 유형 등을 변경할 필요가 없습니다.

+0

이 파일을 HTML 페이지에 포함 시켰지만 IE는 여전히 json 응답을 다운로드하려고합니다. 어떤 도움이 필요합니까? 나는 webApi 2.0을 가지고있다. – Simon