WP Discourse 플러그인 사용 시 Webhook 오류 발생

WP Discourse 플러그인을 설치했고, “Sync Comment Data” 웹훅을 제외한 모든 것이 정상적으로 작동하는 것 같습니다. 웹훅은 계속 실패 상태로 반환되며 Status Code: 400을 보고합니다.

응답 내용은 다음과 같습니다:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
</body></html>
  • payload URL은 올바르게 설정된 것으로 보입니다.
  • Webhook Secret Key는 Discourse와 WP 플러그인 양쪽에 설정되어 있습니다.
  • Content Type은 application/json입니다.
  • Post Event가 선택되어 있습니다.
  • Check TLS certificate of payload url이 선택되어 있습니다.
  • Active가 선택되어 있습니다.

해결 방법에 대한 조언을 주시면 감사하겠습니다.

페이로드 URL과 Webhook Secret Key가 올바르게 설정되어 있는지 다시 확인해 주세요.

그렇게 해도 문제가 해결되지 않는다면, WordPress 사이트에서 어떤 영구 링크(permalink) 구조를 사용하고 있는지 알려 주실 수 있나요? 영구 링크 구조는 WordPress 대시보드의 설정 / 영구 링크(Settings / Permalinks) 섹션에서 확인할 수 있습니다.

페이로드 URL과 웹훅 시크릿 키가 올바르게 설정되어 있습니다.

영구 링크 구조는 게시글 이름입니다

Discourse의 웹훅 이벤트 목록에서 “Ping” 버튼을 클릭했을 때 WordPress 사이트에서 어떤 응답을 받게 되나요?

이 문제에 대해 더 이상의 의견이 있는지 궁금합니다 …

사이트에서 WordPress REST API를 비활성화했는지 확인해 보셨나요? 비활성화되어 있다면 Discourse에서 전송된 Webhook 요청이 실패할 수 있습니다.

활성화된 것 같지만, 더 자세히 살펴볼게요

REST는 괜찮은 것 같은데… 브라우저에 Payload URL을 입력하면 404가 나옵니다 …

그것은 예상되는 동작입니다. 웹훅이 Discourse에 게시하는 경로는 POST 요청만 허용합니다.

그렇다면 핑이 정상적으로 작동할 것으로 기대할 수 있을까요?

네, ping은 정상적으로 작동해야 합니다.

Discourse에서 웹훅의 Payload URL 필드에 추가하려는 URL의 형태가 무엇인가요? URL의 도메인 부분은 생략하셔도 됩니다. WordPress에서 댓글 데이터 동기화 옵션 설명에 표시되는 URL이 정확해야 합니다(사이트에서 사용하는 영구 링크 구조를 기반으로 생성되므로)만, 경우에 따라서는 잘못되었을 수도 있습니다.

https://my.url.net/wp-json/wp-discourse/v1/update-topic-content

WP Discourse 플러그인에서 복사하여 붙여넣기. Webhooks 탭의 Sync Comment Data 섹션.

페이로드 URL이 올바르게 설정되어 있습니다. WordPress 사이트에서 요청을 차단할 수 있는 보안 관련 플러그인이 설치되어 있나요?

지금은 그렇지만, 처음 문제를 겪었을 때는 아니었습니다.

해당 플러그인은 Kadence Add-ons Bundle: Security, Backups, Shop Kit & More 입니다.

Ithemes Security 플러그인의 광고된 기능 중 하나는 Rest API에 대한 접근을 차단할 수 있다는 점입니다. 이 문제가 원인이 아닌지 확인해 보는 것이 좋습니다.

WP Discourse 플러그인과 함께 Sync Comment Data 웹훅을 사용할 필요가 없습니다. 이 웹훅을 사용하는 주요 이점은 Discourse에 댓글이 게시된 후 10분까지 기다리지 않고 즉시 댓글이 표시된다는 것입니다. 매우 트래픽이 많은 사이트에서는 웹훅이 Discourse로 보내는 API 요청의 수를 줄일 수 있습니다. 이는 주로 게시물 인덱스 페이지에 댓글 수를 표시하는 사이트에 영향을 미칩니다.

네, 작동은 하지만 지연을 피하기 위해 웹훅을 구현하고 싶었습니다.
개발자에게 확인해 보니, 보안 플러그인을 설치하기 전이든 후이든 REST API에 블로킹이 없다고 하더군요. 정말 이해가 안 됩니다.

Discourse 플러그인 웹훅 페이지 외에 페이로드 URL을 확인할 수 있는 방법이 있나요?

위에서 게시한 스크린샷은 페이로드 URL이 올바르다는 좋은 신호입니다. 현재 400 응답 코드를 받는다는 것은 WordPress 서버가 요청을 거부하고 있음을 의미합니다. 만약 시크릿 키가 일치하지 않는 문제였다면 500 응답 코드가 반환되었을 것입니다.

WordPress 사이트의 액세스 로그 파일에 접근할 수 있다면, 그 파일에서 문제의 원인을 정확히 확인할 수 있을 것입니다.

제가 확인해야 할 정확한 WP 액세스 로그에 대해 알고 계신가요? 유용한 정보를 찾을 수 없습니다.