como permitir o POST para arquivo php no apache apenas da mesma origem?

como permitir o POST para arquivo php no apache apenas da mesma origem?

Tenho um site com um formulário HTML que, quando enviado, envia com sucesso uma solicitação POST para um arquivo .php no servidor (Apache 2.4.48).

No entanto, quando deixo o Javascript lidar com o envio por meio de JS fetch(), o servidor responde com um erro 405.

Então, analisei os cabeçalhos de solicitação e resposta dos dois POST e eles são quase idênticos, por isso estou confuso sobre por que o primeiro método funciona e o outro é recusado.

A seguir está a solicitação/resposta ao enviar através do formulário HTML (os pontos de exclamação são onde as solicitações POST diferem):

GENERAL
Request URL: https://example.com/php/script.php
Request Method: POST
Status Code: 302 
Remote Address: 160.153.133.187:443
Referrer Policy: origin-when-cross-origin


RESPONSE HEADERS
cache-control: max-age=0                    !
content-length: 0
content-type: text/html; charset=UTF-8
date: Sat, 14 Aug 2021 23:21:34 GMT
expires: Sat, 14 Aug 2021 23:21:34 GMT
location: https://example.com/pages/form-submitted.html#submitted
server: Apache
vary: User-Agent
x-powered-by: PHP/8.0.8


REQUEST HEADERS
:authority: example.com
:method: POST
:path: /php/script.php
:scheme: https
accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9     !
accept-encoding: gzip, deflate, br
accept-language: en-GB,en;q=0.9,es-ES;q=0.8,es;q=0.7,it-IT;q=0.6,it;q=0.5
cache-control: no-cache
content-length: 96
content-type: application/x-www-form-urlencoded     !
dnt: 1
origin: https://example.com
pragma: no-cache
referer: https://example.com/contact
sec-ch-ua: "Chromium";v="92", " Not A;Brand";v="99", "Google Chrome";v="92"
sec-ch-ua-mobile: ?0
sec-fetch-dest: document        !
sec-fetch-mode: navigate        !
sec-fetch-site: same-origin
sec-fetch-user: ?1
upgrade-insecure-requests: 1
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36


FORM DATA
name: Tai Zen
email: [email protected]
phone-number: 12345678910
privacy-consent: on
submit: 

Abaixo, porém, está a solicitação/resposta ao enviar um POST usando fetch():

GENERAL
Request URL: https://example.com/php/script.php
Request Method: POST
Status Code: 302 
Remote Address: 160.153.133.187:443
Referrer Policy: same-origin


RESPONSE HEADERS
cache-control: max-age=2741
content-length: 0
content-type: text/html; charset=UTF-8
date: Sat, 14 Aug 2021 23:31:44 GMT
expires: Sun, 15 Aug 2021 00:17:26 GMT
location: https://example.com/405
server: Apache
vary: User-Agent
x-powered-by: PHP/8.0.8


REQUEST HEADERS
:authority: example.com
:method: POST
:path: /php/script.php
:scheme: https
accept: */*
accept-encoding: gzip, deflate, br
accept-language: en-GB,en;q=0.9,es-ES;q=0.8,es;q=0.7,it-IT;q=0.6,it;q=0.5
cache-control: no-cache
content-length: 471
content-type: multipart/form-data; boundary=----WebKitFormBoundary28YayN0mmqwdpQh0
dnt: 1
origin: https://example.com
pragma: no-cache
referer: https://example.com/contact
sec-ch-ua: "Chromium";v="92", " Not A;Brand";v="99", "Google Chrome";v="92"
sec-ch-ua-mobile: ?0
sec-fetch-dest: empty
sec-fetch-mode: same-origin
sec-fetch-site: same-origin
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36

FORM DATA
name: Tai Zen
email: [email protected]
phone-number: 12345678910
privacy-consent: on
submit:

Devo mudar algo no servidor para permitir solicitações POST para esse arquivo específico?

Porém, gostaria que recebesse solicitações POST apenas do JS que escrevi e não de entidades externas, mas não sei exatamente como fazer isso. Eu tentei o que foi sugerido emesta resposta, mas não funcionou, o servidor deu um erro 500. Suponho que seja porque estou em um plano de hospedagem compartilhada e não tenho acesso total às configurações do Apache, mas não tenho certeza de que esse seja o motivo.

informação relacionada