programing

AJAX 게시 오류: 안전하지 않은 헤더 "연결" 설정을 거부했습니다.

goodsources 2023. 2. 25. 20:56
반응형

AJAX 게시 오류: 안전하지 않은 헤더 "연결" 설정을 거부했습니다.

PHP 파일에 데이터를 다시 게시하는 다음과 같은 커스텀 에이잭스 기능이 있습니다.데이터 투고가 발생할 때마다 다음 두 가지 오류가 발생합니다.

안전하지 않은 헤더 "Content-length" 설정을 거부했습니다.
안전하지 않은 헤더 "연결" 설정을 거부했습니다.

코드:

function passposturl(url1, params, obj)
{
    //url1 = url1+"&sid="+Math.random();
    xmlHttp = get_xmlhttp_obj();
    xmlHttp.loadflag = obj;
    xmlHttp.open("POST", url1, true);
    //alert(url1);
    //alert(params);
    //alert(obj);
    //alert(params.length);
    xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlHttp.setRequestHeader("Content-length", params.length);
    xmlHttp.setRequestHeader("Connection", "close");
    xmlHttp.onreadystatechange = function ()
    {
        stateChanged(xmlHttp);
    };
    xmlHttp.send(params);
 }

내가 뭘 잘못하고 있지?

다음 두 줄을 제거합니다.

xmlHttp.setRequestHeader("Content-length", params.length);
xmlHttp.setRequestHeader("Connection", "close");

XMLHttpRequest는 이러한 헤더를 설정할 수 없습니다.이 헤더는 브라우저에서 자동으로 설정됩니다.그 이유는 이러한 헤더를 조작함으로써 서버가 동일한 접속을 통해 두 번째 요청을 받아들이도록 속일 수 있기 때문입니다.이것은 통상적인 보안 검사를 거치지 않는 것입니다.이것은 브라우저의 보안 취약성입니다.

W3C XMLHttpRequest Level 1 스펙 섹션 4.6.2는 "사용자 에이전트에 의해 제어되며 setRequest에서 설정할 수 없는" 헤더를 나열합니다.Header() 메서드.Connection과 Content-length가 모두 목록에 있습니다.

Accept-Charset
Accept-Encoding
Access-Control-Request-Headers
Access-Control-Request-Method
Connection
Content-Length
Cookie
Cookie2
Date
DNT
Expect
Host
Keep-Alive
Origin
Referer
TE
Trailer
Transfer-Encoding
Upgrade
User-Agent
Via

언급URL : https://stackoverflow.com/questions/7210507/ajax-post-error-refused-to-set-unsafe-header-connection

반응형