개행 관련 질문

POST /admin HTTP/1.1
Host: host1.dreamhack.games:포트
User-Agent: Admin Browser
이렇게 DATA에 입력후 제출해보면, timed out을 반환하고
POST /admin HTTP/1.1

Host: host1.dreamhack.games:포트

User-Agent: Admin Browser
이렇게 개행을 두번 한 후에 제출을 하면 only admin browser를 반환합니다
콜론사이에 공백을 없애보기도, 추가해보기도 하였지만 전부 똑같이 only admin browser가 반환되었습니다
아주 바보같은 실수를 한것같긴합니다만, 그 실수가 무엇인지 알 수가 없네요 ㅠ

#web
작성자 정보
답변 1
2dedce
워게임 고인물

POST 요청은 반드시 바디데이터가 있어야 하는데

POST /admin HTTP/1.1
Host: host1.dreamhack.games:포트
User-Agent: Admin Browser

이렇게 제출하면 헤더만 있고 바디가 없어서 프로그램이 당황하고 대답을 안줘서 timed out이 뜬 것 같고요.

바디와 헤더는 빈줄로 구별하죠.

POST /admin HTTP/1.1

Host: host1.dreamhack.games:포트

User-Agent: Admin Browser

이렇게 제출하면 빈줄 다음으로는 전부 바디로 인식하기 때문에 헤더가 없고

Host: host1.dreamhack.games:포트

User-Agent: Admin Browser

를 전부 바디라고 생각해 User-Agent: Admin Browser을 헤더로 생각하지 않고 무시한 것 같습니다. 그래서 only admin browser가 뜬 것 같습니다. 그러므로

POST /admin HTTP/1.1
Host: host1.dreamhack.games:포트
User-Agent: Admin Browser
어떤 헤더: 어쩌구
저쩌구: 어쩌구

a=b&c=d

이런 식으로 보내시면 될 것 같습니다. 헤더에는 바디의 크기를 담는 Content-Length나 바디의 종류를 알려주는 Content-type도 추가하셔야 합니다. 브라우저의 개발자 도구로 실제 POST request의 헤더와 바디가 어떻게 생겼는지 볼 수 있습니다. 실제로 폼 데이터에 담긴 정보가 어떻게 전달되는지 확인해보세요

2021.12.19. 17:03
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기