나는 이미이 주제를 많이 봤고,이 헤더, Heroku에서의 사용, Django 기반 프로젝트에 대한 다양한 기사를 읽었습니다.
그러나 여전히 내 머릿속은 모두 혼란 스럽습니다.
- 이 헤더의 목적은 무엇입니까?
- 사용자 개인 정보를 침해합니까?
- 사용자 추적에 도움이 될 수 있습니까?
나는 이미이 주제를 많이 봤고,이 헤더, Heroku에서의 사용, Django 기반 프로젝트에 대한 다양한 기사를 읽었습니다.
그러나 여전히 내 머릿속은 모두 혼란 스럽습니다.
답변:
클라이언트가 액세스하는 웹 서비스를 운영하는 경우 요청 (클라이언트가 볼 수 있음)을 서버 로그 (서버가 볼 수 있음)와 연관시키는 것이 어려울 수 있습니다.
의 아이디어는 X-Request-ID
클라이언트가 임의의 ID를 만들어 서버에 전달할 수 있다는 것입니다. 그런 다음 서버는 생성하는 모든 로그 문에 해당 ID를 포함합니다. 클라이언트가 오류를 수신하면 버그 보고서에 ID를 포함하여 서버 운영자가 해당 로그 문을 조회 할 수 있습니다 (타임 스탬프, IP 등에 의존하지 않아도 됨).
이 ID는 클라이언트에 의해 (무작위로) 생성되므로 민감한 정보가 포함되어 있지 않으므로 사용자의 개인 정보를 침해해서는 안됩니다. 요청마다 고유 ID가 생성되므로 사용자 추적에도 도움이되지 않습니다.
목적 : 멱 등성
모든 요청에 대해 변경되지만 요청 재시도시 동일하게 유지되는 ID를 사용하여 수신자는 요청이 두 번 이상 처리되지 않도록 할 수 있습니다.
다음은 일부 API 제공 업체의 인용문입니다.
모든 POST, PUT 및 PATCH HTTP 요청에는 재시도시 멱 등성 메시지 처리를 보장하는 데 사용되는 고유 한 X-Request-Id 헤더가 포함되어야합니다.
당신이 경우 그것을 임의의 문자열, 독특한 당 요청을 , 당신의 개인 정보 보호 침해,도 추적을 사용하지 않습니다.
멱 등성이 제공해야하는 것에 대해 더 알고 싶다면 이 통찰력있는 기사를 읽어보십시오 .
NB Stefan Kögl이 언급했듯이이 헤더는 표준화되지 않았으므로 "X-"접두사가 사용되지 않습니다.
인터넷이 (평상시처럼) 재생되고 있으므로 Tellstra에 전화하면 영원히 전화를 기다리고 있습니다. 마침내 당신은 좌절감에 전화를 포기하고 내려 놓습니다. (실패한 통화입니다. Tellstra의 통화 기록에 기록이 있습니다.)
"그게 다야, 옴부즈맨에 전화 할게!"
그러나 Obmudsman에는 수천 개의 통화 기록이 있습니다 (Tellstra의 모든 실패한 쿼리). Telstra에 전화했는데 전화가 성공하지 못했다고 말하면 충분하지 않습니다 . 옴부즈맨은 Tellstra의 모든 통화 기록에서 어떤 것이 귀하의 것인지 어떻게 알 수 있습니까? ?
이것이 바로 X-Request-ID가 들어오는 곳입니다. Tellstra에 전화 할 때마다 임의의 번호 (X-Request-ID)를 전달하고 이것은 Tellstra 레코드에 기록됩니다. 이렇게하면 옴부즈맨 (모든 기록에 액세스 할 수 있음)이 수신 전화를 찾아서 무엇이 잘못되었는지 알아낼 수 있습니다.
http 요청에도 동일하게 적용됩니다. 클라이언트가 오류 또는 큰 보고서를 발행 할 때 무엇이 잘못되었는지 알아내는 데 사용되는 ID입니다 (백엔드 개발자로서).
이것이 기본적인 요약입니다. 질문 등은 그냥 댓글을 게시하고 정리하겠습니다.
이 요청 헤더는 동기화에 사용할 수 있습니다. 오프라인 기능을 제공하는 ToDo 목록을 작성했다고 가정 해 보겠습니다. 사용자가 3 개의 항목을 만들고 각 항목에는 오프라인 애플리케이션에서 고유 한 UUID가 제공됩니다. 네트워크 연결이 가능하면 레코드가 서버에 게시되고 데이터베이스에서 자동 생성 된 해당 ID가 반환됩니다. 그런 다음 앱의 ID (예 : HTML "li"요소의 "id"속성)를 바꿀 수 있습니다.