문제

ASP.NET MVC 응용 프로그램에서 데이터를 요청하기 위해 다음 코드를 사용하고 있습니다. 또한 요청/응답을 볼 수 있도록 TCPTRACE를 사용하고 있습니다.

if (isInteger($('#txtDay').val()) && isInteger($('#txtMonth').val()) && isInteger($('#txtYear').val())) {
    $.ajax({
        type: 'POST',
        contentType: 'application/json; charset=utf-8',
        url: strApi + 'wip/job/getsummary/' + $('#txtYear').val() + '/' + $('#txtMonth').val() + '/' + $('#txtDay').val(),
        data: '{}',
        dataType: 'json',
        cache: false,
        beforeSend: function(XMLHttpRequest) { ShowLoading(); },
        success: function(data, textStatus) {
            ShowJobSummaryList(data);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            HideLoading();
            ShowStatus('unable to retrieve job summary list');
            alert(XMLHttpRequest.statusText);
            alert(textStatus);
        },
        complete: function(XMLHttpRequest, textStatus) {
            HideLoading();
        }
    });
}

IE를 사용하면 모든 것이 잘 작동합니다. 콘텐츠 유형은 Application/JSON으로 올바르게 설정됩니다. 그러나 Firefox 3.5.5에서는 컨텐츠 유형이 누락되었습니다.

OPTIONS /api/wip/job/getsummary/2009/11/25 HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Origin: http://localhost
Access-Control-Request-Method: POST
Access-Control-Request-Headers: x-requested-with

이로 인해 ASP.NET MVC가 XML을 반환합니다. Firefox가 콘텐츠 유형을 보내지 않는 이유를 누구든지 설명 할 수 있습니까?

도움이 되었습니까?

해결책

옵션 요청을 보내는 것처럼 보입니다. 이 문제의 정상적인 원인은 사용 시도가 다른 브라우저 (Firefox 포함 - 참조)에 Ajax 요청을 할 때입니다. 여기) 허용하지 않습니다.

요청하는 URL이 다른 도메인에 있는지 명확히 할 수 있습니까? 이 경우 JSONP를 사용하거나 서버 프록시를 사용해야합니다.

다른 팁

나에게도 비슷한 일이 일어나고 있습니다. Fiddler와 같은 요청을 해제하면 작동하지만 Firefox httprequester로 발사하면 그렇지 않습니다. 그래서 나는 두 요청을 모두 비교했으며 httprequester가 요청 헤더를 변경하는 것처럼 보입니다. 나는 그것을 작동시키기 위해 여러 가지 방법을 시도했고, 원시 요청을 편집했지만, 최종 요청을 확인할 때 컨텐츠 유형이 다음과 같이 복제됩니다.

Content-Type: application/json, application/json

또한 다른 헤더도 추가합니다. 그러나 Fiddler의 최종 요청을 확인했을 때 그것은 단지 다음과 같습니다.

Content-Type: application/json

따라서 효과가있었습니다.

또한 Mozilla Firefox 제품 지원 페이지에서 유사한 버그를 불평하는 리뷰를 찾았습니다. 그러나 나는 이것이 httprequester에서 이전에 효과가 있었기 때문에 최신 버전과 관련이 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top