2013-02-17 2 views
2

저는 ASP.NET 4.5 웹 API 컨트롤러에 이미지를 업로드 할 때 fineuploader을 사용하고 있습니다. 컨트롤러가 정상적으로 작동하고 이미지가 업로드됩니다. API 컨트롤러에서 200 응답을받습니다. 업로드 성공 후 미리보기 이미지를 표시하고 Amazon S3 내의 위치에 대한 파일 이름이 JSON 응답으로 돌아옵니다. Chrome 또는 IE10에서이 방법을 사용해도 정상적으로 작동합니다. Firefox에서이 작업을 시도하면 다시 나타나는 responseJson은 빈 객체이며 오류로 표시됩니다. jQuery 1.8.2 및 fineuploader 3.2 사용하고 있습니다. responseJson.message은 정의되지 않았기 때문에 실제로는 undefined이 화면에 표시됩니다. 다음은 js 코드입니다.Firefox에서 fineuploader json 응답이 반환되지 않습니다.

(function ($) { 
    $('#file-uploader').fineUploader({ 
    multiple: false, 
    request: { 
     endpoint: '/api/post-logo', 
     forceMultipart: false 
    }, 
    // other setup options removed for brevity 
    }).on('complete', function (event, id, fileName, responseJson) { 
    if (responseJson.success) { 
     // for now, to illustrate the issue 
     alert(responseJson.savefilename); 
    } else { 
     $('#file-uploader').after("<span class='field-validation-error'>" + responseJson.message + "</span>"); 
    } 
    }); 
})(jQuery); 

되돌아 오는 응답은 application/json입니다. Firefox에서 제대로 작동하려면 어떻게해야합니까?

답변

3

FF와 Chrome의 차이점은 Accept 요청 헤더입니다.

FF : 그냥 두 브라우저 간의 결과를 비교 방화 광 및 크롬 개발자 도구 모음을 사용

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 

크롬 : 그래서 당신은 FF 올바른 Accept를 전송하지 볼 수

Accept: */* 

헤더 및 웹 API의 콘텐츠 협상 메커니즘은 단순히 text/xml (이는 클라이언트가 요청한 것이기 때문에)으로 떨어집니다.

다행히도 플러그인을 사용하면 customHeader 속성을 사용하여 요청 헤더를 무시하고 (귀하의 경우 application/json를) 예상되는 유형으로 강제 할 수 있습니다 :

request: { 
    endpoint: '/api/post-logo', 
    forceMultipart: false, 
    customHeaders: { Accept: 'application/json' } 
}, 
+0

천재를 변함 - 대린을 환호, 그게 고정이야 – levelnis

관련 문제