파이썬 flask 웹 프레임워크 버전을 2.0 대로 업데이트 하는 테스트를 진행하였다. 기존에는 request.is_xhr 이라고 해서 ajax 로 전달되는 것인지 아니면 http 에서 페이지 이동으로 들어온 것인지 구분해주는 코드가 있었다.( XHR 은 javascript 의 XMLHttpRequest 를 의미 한다.) flask 가 버전업 되면서 flask 에서 사용하는 werkzeug 버전도 업그레이드 되면서 더 이상 request.is_xhr 가 지원되지 않는다. 그래서 그 이유를 확인하다가  HTTP 헤더 중 X-Requested-With 헤더를 알게 되었다. (X- 가 붙은 헤더는 표준이 아니라는 의미라고 한다. )

 Javascript 를 이용한 네트워크 요청과 HTML 에서의 여러 method(get, post) 를 이용해서 접속하는 경우를 구별하는 원리를 몰랐는데, 관습적으로 Javascript 를 이용할 때  X-Requested-With 헤더값을 XMLHttpRequest 로 해서 전달하는 것으로 보인다.  jquery 의 ajax 구문을 이용할 때는 이 헤더가 기본적으로 설정되는 것 같다. 요즘 많이 사용하는 axios 같은 라이브러리의 경우 axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; 와 같이 수동으로 넣어(https://github.com/axios/axios/issues/1322#issuecomment-449626391 ) 주는 식으로 적용하는 것 같다. (X-Requested-With 가 관습적으로 넣은 것이라 request.is_xhr 가 사라지는 것으로 추정한다. )

 기존 flask 에서는 이 헤더가 XMLHttpRequest 값으로 오면 request.is_xhr 가 true 로 전달되는 것 같다. 어째든 이제는 헤더값을 직접 확인 해야 할 것 같다.  request.headers.get('X-Requested-With') == 'XMLHttpRequest' 일 때 ajax 이라고 생각해야 될 것 같다.