2013-01-23 3 views
2

Google App Engine에서 호스팅되는 Python 서버에 HTTP 요청을 보내는 Windows Phone 클라이언트로 구성된 응용 프로그램이 있습니다. GAE 로그에서 몇 밀리 초 내에 동일한 클라이언트로부터 여러 개의 동일한 요청을받는 경우가 종종 있습니다 (아래 참조). 개발 환경에서 클라이언트를 테스트 할 때이 동작을 전혀 보지 못했습니다. 그럼에도 불구하고 이것이 내 코드에서 오류 일 가능성이 있지만 내 질문은 다음과 같습니다.HTTP 요청을 interwebs 내에서 복제 할 수 있습니까?

인프라 (모바일 네트워크, 인터넷, Google 애플리케이션 엔진 자체)로 인해 요청이 복제 될 수 있습니까?

그렇다면 다음 질문에 대한 답입니다.이를 최소화하는 모범 사례가 있습니까?

screenshot of gae log

답변

3

네트워크에서 HTTP 요청을 복제하는 것은 실제로 불가능합니다. 잘못 구성된 라우팅을 사용하여 IP 데이터 그램을 복제 할 수 있지만 TCP 계층은 중복 IP 데이터 그램을 필터링하여 종단 간 연결에서 하나의 TCP 스트림 만 볼 수 있습니다. App Engine은 성능상의 이유로 이전 TCP 연결이 종료되기를 기다리는 표준 시간없이 TCP 포트를 재사용 할 수 있지만 연결을 초기화하는 데 사용되는 3 방향 TCP 핸드 셰이크에서 중복 패킷이 생존 할 것이라고는 여전히 생각하지 않습니다.

5

는 아니, HTTP 요청은 기본 인프라로 복제 할 수 없습니다. 적어도 이 아니어야합니다.

아마도 대칭 사인으로 만들어진 모바일 앱 요청을 볼 수 있으며 쿠키를 사용하지 않고 동일한 사용자 에이전트 문자열을가집니다. 동일한 IP는 모바일 네트워크가 NAT를 내부적으로 사용하기 때문에 하나의 IP 주소 뒤에 여러 개의 (수천 가지) 클라이언트가 숨어 있기 때문입니다.

+0

웹 추적 소프트웨어를 설치 한 직원에게 문제가 발생했습니다. 어떤 이유로 소프트웨어가 추적 목적으로 모든 페이지/요청을 다시 치고 있음이 밝혀졌습니다. 결국 API가 인증없이 유도 될 수 있다는 결점이 생겼습니다./ – Nathaniel

+0

@Peter, NAT에 대한 요점은 잘 찍히지 만, 내 경우에는 어떤 일이 일어나고 있는지 확신 할 수 없습니다. (나는 믿을 수 없습니다. 나는 블루 문에 한 번 이상 같은 요청을 발행하는 여러 클라이언트를 갖기에 충분한 앱 사용량을 가지고 있습니다 .-) 그래서, 디버거로 들어가서 ... –

관련 문제