전체 글 29

서버 설정을 못 건드릴 때 헤더 유실 지점 찾기 (진단 파일)

앞 글에서 워드프레스 REST 401의 원인이 Authorization 헤더 유실이라는 걸 확인했습니다. 그런데 헤더가 정확히 어디서 사라지는지 모르면 고칠 지점을 못 정합니다. 프록시일 수도, 웹서버일 수도, PHP 처리 단계일 수도 있습니다. 이 글은 서버 구성을 마음대로 못 바꾸는 상황에서 헤더 유실 지점을 좁히는 방법입니다.왜 지점부터 찾아야 하나헤더가 사라지는 경로는 여러 겹입니다. 브라우저에서 나간 요청이 CDN이나 리버스 프록시를 거치고, 웹서버로 들어와, PHP로 전달됩니다. 각 구간에서 Authorization 헤더가 떨어질 수 있습니다. 어림짐작으로 설정을 이것저것 바꾸면 시간만 버리고, 운이 나쁘면 멀쩡하던 다른 것을 망가뜨립니다. 그래서 고치기 전에 어디서 사라지는지부터 확정해야 합..

워드프레스 REST 401, 비밀번호가 아니라 Authorization 헤더 문제

워드프레스 REST API로 글을 발행하려면 인증이 필요합니다. 애플리케이션 비밀번호를 발급해 Basic 인증으로 보내면 되는데, 분명히 맞는 비밀번호인데도 401만 돌아오는 경우가 있습니다. 이 글은 그 401의 진짜 원인을 찾는 과정을 정리한 기록입니다. 결론부터 말하면 비밀번호가 틀린 게 아니었습니다.증상: 읽기는 되는데 쓰기만 401공개 글 목록을 읽는 요청은 잘 됩니다. 인증이 필요 없으니까요. 문제는 인증이 필요한 요청입니다.GET /wp-json/wp/v2/posts → 200 (인증 불필요)GET /wp-json/wp/v2/users/me → 401 rest_not_logged_inPOST /wp-json/wp/v2/posts → 401응답 코드는 r..

워드프레스 REST 예약 발행이 9시간 밀리는 이유 (타임존 함정)

워드프레스 REST API로 예약 발행을 붙이는 작업은 문서가 잘 되어 있어서 금방 끝납니다. status를 future로, date에 발행 시각을 넣어 POST하면 워드프레스가 알아서 그 시각에 발행합니다. 서버나 스크립트가 계속 떠 있을 필요도 없습니다. 그런데 저는 이 간단한 구조에서 예약이 9시간씩 밀리는 문제를 겪었습니다. 이 글은 그 원인을 추적한 기록입니다.증상: 18시에 예약했는데 발행이 안 된다저녁 6시로 예약한 글이 6시가 한참 지나도 future 상태 그대로였습니다. 처음에는 wp-cron이 죽었나 의심했지만, 사이트는 정상이었고 다른 기능도 멀쩡했습니다. 글의 메타데이터를 REST로 직접 확인하고 나서야 원인이 보였습니다.GET /wp-json/wp/v2/posts/{id}?cont..