"HTTPStatus.BAD_REQUEST - Bad request syntax or unsupported method."에러?

문제를 풀려고 이 방법 저 방법 시도를 다 해보고 있었습니다.
그냥 \r\n을 입력해서 캐리지 리턴을 표현할려고 하니 아무것도 되지가 않아서
%0D%0A처럼 쓰라고 해 보길래 %0D%0A를 넣어 보았습니다.
그래서 다음과 같이 입력을 해 보았는데..

host : 0.0.0.0
port: 8000
POST /admin HTTP/1.1 %0D%0A
Host: host1.dreamhack.games:13950 %0D%0A
Connection: keep-alive %0D%0A
User-Agent: Admin Browser %0D%0A
DreamhackUser: admin %0D%0A
Cookie: admin=true; %0D%0A
userid: admin %0D%0A
Content-Type: application/x-www-form-urlencoded; %0D%0A

다음과 같은 문제점이 발생했습니다.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<title>Error response</title>
</head>
<body>
<h1>Error response</h1>
<p>Error code: 400</p>
<p>Message: Bad request version ('%0D%0A').</p>
<p>Error code explanation: HTTPStatus.BAD_REQUEST - Bad request syntax or unsupported method.</p>
</body>
</html>

stackoverflow같은 곳에 무슨 문제인지 검색해보았으나 도저히 연관성을 찾을 수는 없었고, 드림핵에 올라온 모든 질문을 다 뒤져봤으나 딱히 큰 도움이 되지 않았습니다. 혹시 제가 아예 길을 반대로 가고 있는건가요? 감을 못 잡아서 그런데 제가 어떤 방향으로 가야하는지 도움 좀 주시면 감사하겠습니다.

#web
작성자 정보
답변 1
2dedce
워게임 고인물
<form method="POST">

  <div class="row">
    <div class="col-md-6 form-group">
      <label for="InputHost">host</label>
      <input type="text" class="form-control" id="InputHost" placeholder="host" name="host" required="">
    </div>
    <div class="col-md-6 form-group">
      <label for="InputPort">port</label>
      <input type="text" class="form-control" id="InputPort" placeholder="port" name="port" required="">       
    </div>
  </div>

  <div class="row">
    <div class="col-md-12 form-group">
      <label for="InputData">Data</label>
      <textarea id="InputData" class="form-control" rows="5" placeholder="data" name="data" required=""></textarea>
    </div>
  </div>

  <button type="submit" class="btn btn-default">Send</button>
</form>

\r\n 대신에 그냥 줄바꿈인 \n만 해도 됩니다. 그러므로 굳이 특수문자를 입력할 노력 없이 textarea에다가 그냥 엔터키만 눌러서 \n을 입력하시면 됩니다.

아마 통신 과정에서 textarea에 있는 \n을 \r\n으로 변환해서 보내는 것 같습니다.

%0D%0A 와 같은 것은 url encode된 형태입니다. 이를 폼 데이터에 담아도 이것을 url encode한 다음에 url decode하므로 서버가 받을 땐 %0D%0A로 보기때문에 한 번더 url decode하지 않습니다. 그래서 에러가 출력된 것 같습니다.

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