2013-08-14 3 views
1

우리 웹 서버 (Windows Server 2003, IIS 6)에 POST하는 사용자가 있습니다. 그들은 우리의 webapp에서 전체 응답을 얻지 만 IIS는 "400 Bad Request"로 응답합니다. 다른 정보는 제공되지 않습니다 (예, 친숙한 오류가 해제되었습니다).두 개의 응답으로 단일 요청에 응답하는 IIS

처음에 나는 거기에 응답을 삽입하는 미들웨어라고 생각했습니다. 그러나 HTTPSys 오류 로그에서 다음과 같은 정보를 찾을 수있었습니다 :

2013-08-09 23:36:40 11901 80 HTTP/0.0 분석되지 않음 - 400 - BadRequest -

이러한 오류가 쌓여서 이유가 없습니다. 분석되지 않은 것은 실제로 아무 것도 말해주지 않으므로 계속 진행할 필요가 없습니다. 나는 그들에게 wireshark 추적을 생성 할 수있었습니다. 이것은 우리가 실제로 정확한 응답으로 응답하고 있음을 보여주고 400 번의 잘못된 요청 응답을 추가하는 것을 나타냅니다. 나는 그들의 요청을 wireshark에서 정확히 복사하고 그것을 내 컴퓨터에서 시도했지만 물론 그것을 재현 할 수는 없다. (나는 하나의 유효한 응답을 얻는다.)

"분석되지 않은"오류를 완전히 재현 할 수 없기 때문에 한 요청에서 두 개의 응답을 다시 얻을 수있었습니다. 의도적으로 요청 헤더와 본문 사이의 줄 끝을 깨고 "잘못된 요청 (잘못된 동사)"다음에 완전한 정확한 응답을 받았습니다.

두 질문

1) 사람이 HTTPsys 로그에 "해석 안된"오류를 생성하는 방법에 관해서는 어떤 아이디어가 있습니까? 내가 어떻게 이것을 재현하려고하는지에 대한 생각은?

2) IIS가 두 요청으로 단일 요청에 응답하는 이유는 무엇입니까? 정상적인 동작입니까, 아니면 구성 오류가 있습니까?

이 끔찍한 두통에 대한 도움을 제공해 주신 분께 감사드립니다.

답변

1

나는 다른 누구에게도이 고통을 원하지 않기 때문에 여기에 내 자신의 질문에 대답하려고합니다.

그것은 그들의 POST가, 나는 그것이 포함되지 않은 생각입니다 내용 길이에 약간의 오류가 발생했습니다 밝혀졌다 마지막 "\ 연구 \ n"하지만 짧은 었죠 개수 무엇이든 2.

정확한 요청을 복사하여 내 컴퓨터에서 보낸 경우 절대로 나타나지 않는 이유는 연결을 제대로 닫지 못했기 때문입니다. 어떤 이유로 FIN으로 연결을 닫으면 실제로 차이가 발생하여 400 Bad Request가 발생합니다.

왜 이런 일이 발생하는지 잘 모르겠습니까? FIN이 오면 초기 요청에서 보낸 여분의 문자가 어떻게 든 읽혀질 수 있습니다. 나는 모른다. 그러나 너는 그것을 가지고있다. 내용 길이를 고치면 고통이 사라집니다.

관련 문제