programing

MSIE가 Ajax 요청에 대해 상태 코드 1223을 반환합니다.

css3 2023. 8. 18. 22:48

MSIE가 Ajax 요청에 대해 상태 코드 1223을 반환합니다.

Ajax 요청(POST 방식)을 이용하여 양식을 제출하고, 응답에 대한 HTTP 상태 코드를 확인하여 성공 여부를 확인하고 있습니다.

파이어폭스에서는 잘 작동하지만 MSIE-8에서는 당연히 작동하지 않습니다.제출은 실제로는 정상적으로 작동합니다, 저는 제 서버를 확인하고 제출이 작동하고 서버가 204의 상태 코드로 응답한 것을 확인할 수 있습니다.다시, 파이어폭스는 요청 객체의 상태 코드 204를 올바르게 제공하지만 IE는 상태 코드 1223을 제공합니다.

MSIE에서 정확한 상태 코드를 얻을 수 있는 방법이 있습니까?양식을 제출하고 응답을 확인하는 코드는 아래와 같습니다.

    var req = new XMLHttpRequest();
    req.open("POST", "p.php?i=" + self.__isid, true);
    //Send the proper header information along with the request
    req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    req.setRequestHeader("Content-length", formdata.length);
    req.setRequestHeader("Connection", "close");

    req.onreadystatechange = function()
    {
        if(req.readyState == 4)
        {
            if(req.status == 204 || req.status == 200)
            {
                //Success. Update the feed.
                self.__postFeed.update();
                self.__form.reset();
            }
            else
            {
                //TODO: Better error handling.
                alert("Error submitting post:\n" + req.responseText);
            }
        }
    }
    req.send(formdata);

MSXML HTTP의 XMLHTTPRequest 구현(최소한 Windows XP SP3+의 IE 8.0에서는 상태 코드 204(내용 없음)의 HTTP 응답을 제대로 처리하지 못합니다. 'status' 속성의 값은 1223입니다.

이것은 알려진 버그이며 대부분의 자바스크립트 기반 프레임워크는 이 상황을 처리하고 IE에서 1223에서 204까지 정규화합니다.

그래서 당신의 문제에 대한 해결책은 다음과 같습니다.

// Normalize IE's response to HTTP 204 when Win error 1223.
status : (conn.status == 1223) ? 204 : conn.status,
// Normalize IE's statusText to "No Content" instead of "Unknown".
statusText : (conn.status == 1223) ? "No Content" : conn.statusText

참조:

dojo - http://trac.dojotoolkit.org/ticket/2418

프로토타입 - https://prototype.lighthouseapp.com/projects/8886/tickets/129-ie-mangles-http-response-status-code-204-to-1223

YUI - http://developer.yahoo.com/yui/docs/connection.js.html (거래 응답 처리)

JQuery - http://bugs.jquery.com/ticket/1450

ExtJS - http://www.sencha.com/forum/showthread.php?85908-FIXED-732-Ext-doesn-t-normalize-IE-s-crazy-HTTP-status-code-1223

언급URL : https://stackoverflow.com/questions/10046972/msie-returns-status-code-of-1223-for-ajax-request