서버에 XMLHttpRequest
~ POST
을 사용하는 자바 스크립트 코드 작업 중입니다.자바 스크립트 XMLHttpRequest - 첫 번째 POST 요청 만 작동합니다.
var a = sometext;
var b = someOtherText;
var msg = "a=" + encodeURIComponent(a) + "&b=" + encodeURIComponent(b);
var server = new XMLHttpRequest();
server.open("POST", "http://localhost:3333", true);
server.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
server.send(msg);
내 컴퓨터의 포트 3333에에서 듣고있어 (윈도우 7)을 사용하여 netcat을 :
내 코드는 다음 (내가 구글 크롬의 북마크에서 그것을 실행하는거야)과 같이 보입니다 . 처음으로 코드를 실행하면 netcat을 실행중인 명령 프롬프트에서 POST
요청, 모든 헤더 및 보낸 데이터의 올바른 값 (msg
)을 표시합니다. 그러나 스크립트를 다시 실행하면 (열려있는 웹 페이지에서) 명령 프롬프트에 더 이상 새로운 정보가 표시되지 않습니다. 이는 나중에 POST
명령이 실패했음을 의미합니다. (Chrome의 JavaScript 콘솔을 보면 아무 것도 없습니다. 오류 메시지). netcat 리스너를 재시작하고 스크립트를 재실행하면 첫 번째 실행이 올바르게 작동하고 후속 실행은 아무 것도 수행하지 않습니다.
왜 이것이 실패하는지에 대한 아이디어가 있습니까?
편집 : 나는 조금 더 장난 짓을했는지, 그리고 그것을 폐쇄로 표시되지 않습니다 로컬 호스트에 대한 연결을 밝혀 (또는 어떻게 든 server
목적을 위해 예약되고있다) . 스크립트를 실행 한 탭을 닫으면 모든 리소스가 보관되고 스크립트가 다시 작동합니다.
XMLHttpRequest가 완료 되 자마자 닫을 수있는 방법이 있습니까? 나는 ('Connection: close'
) 할 헤더를 추가하려고했지만 허용되지 않는 것으로 밝혀졌습니다. 나 또한 동기화 및 호출 server.abort()
이후에 요청을 변경했는데 (심지어는 그 기능이 정확히 무엇인지 말할 훌륭한 문서를 찾을 수 없었다),하지만 도움이되지 않았다. 어떻게 도움이 될 것 같아 1.1 대신 HTTP/1.0을 사용하여 연결하려면 지정하는 방법을 알아낼 수 없습니다.
아이디어가 있으십니까?
저는 이미 -L을 사용하고 있습니다. (netcat을 시작하기 위해 "nc -L -p 3333 -vv"를 사용하고 있습니다). 또한 명령 프롬프트의 커서가 정보의 끝에서 끝나기 때문에 연결이 닫히지 않는 것처럼 느껴집니다. 새 줄이나 다른 것이 아닙니다. – scaevity
@scae : (유효한) HTTP 응답으로 브라우저를 닫으십시오. 업데이트 된 답변. –
감사! HTTP 요청에 응답하는 간단한 서버를 만들었고 연결을 올바르게 닫을 수있었습니다. – scaevity