Puncte:0

cum să permită POST la fișierul php în apache numai de la aceeași origine?

drapel jp
Tai

Am un site web cu un formular HTML care, atunci când este trimis, trimite cu succes o solicitare POST către un fișier .php de pe server (Apache 2.4.48).

Cu toate acestea, când las Javascript să se ocupe de trimiterea printr-un JS fetch(), serverul răspunde cu o eroare 405.

Așa că am analizat anteturile de cerere și răspuns pentru cele două POST și sunt aproape identice, așa că sunt confuz de ce funcționează prima metodă și cealaltă este refuzată.

Următoarea este cererea/răspunsul la trimiterea prin formularul HTML (punctele de exclamare sunt acolo unde solicitările POST diferă):

GENERAL
Adresa URL a solicitării: https://example.com/php/script.php
Metoda de solicitare: POST
Cod de stare: 302 
Adresă de la distanță: 160.153.133.187:443
Politica referitor: origin-when-cross-origin


ANTETE DE RĂSPUNS
cache-control: max-age=0 !
lungimea conținutului: 0
tip de conținut: text/html; set de caractere=UTF-8
data: sâmbătă, 14 august 2021 23:21:34 GMT
expiră: sâmbătă, 14 august 2021 23:21:34 GMT
locație: https://example.com/pages/form-submitted.html#submitted
server: Apache
variază: User-Agent
x-alimentat de: PHP/8.0.8


ANTETE DE CERERE
:authority: example.com
:metoda: POST
:cale: /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-limba: 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: fără cache
Lungimea conținutului: 96
tipul de conținut: application/x-www-form-urlencoded !
dnt: 1
origine: https://example.com
pragma: fără cache
referer: https://example.com/contact
sec-ch-ua: "Chromium";v="92", " Nu este A;Brand";v="99", "Google Chrome";v="92"
sec-ch-ua-mobile: ?0
sec-fetch-dest: document !
sec-fetch-mode: navigați!
sec-fetch-site: aceeași origine
sec-fetch-user: ?1
solicitări-upgrade-nesigure: 1
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, ca Gecko) Chrome/92.0.4515.131 Safari/537.36


DATE FORMULARE
nume: Tai Zen
e-mail: [email protected]
numar de telefon: 12345678910
confidențialitate-consimțământ: activat
Trimite: 

Mai jos, în schimb, este cererea/răspunsul atunci când trimiteți un POST folosind fetch():

GENERAL
Adresa URL a solicitării: https://example.com/php/script.php
Metoda de solicitare: POST
Cod de stare: 302 
Adresă de la distanță: 160.153.133.187:443
Politica referitor: aceeași origine


ANTETE DE RĂSPUNS
cache-control: max-age=2741
lungimea conținutului: 0
tip de conținut: text/html; set de caractere=UTF-8
data: sâmbătă, 14 august 2021 23:31:44 GMT
expiră: Duminică, 15 august 2021 00:17:26 GMT
locație: https://example.com/405
server: Apache
variază: User-Agent
x-alimentat de: PHP/8.0.8


ANTETE DE CERERE
:authority: example.com
:metoda: POST
:cale: /php/script.php
:scheme: https
Accept: */*
accept-encoding: gzip, deflate, br
accept-limba: 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: fără cache
lungimea conținutului: 471
tip-conținut: date-multiparte/form-date; limită=----WebKitFormBoundary28YayN0mmqwdpQh0
dnt: 1
origine: https://example.com
pragma: fără cache
referer: https://example.com/contact
sec-ch-ua: "Chromium";v="92", " Nu este A;Brand";v="99", "Google Chrome";v="92"
sec-ch-ua-mobile: ?0
sec-fetch-dest: gol
sec-fetch-mode: aceeași origine
sec-fetch-site: aceeași origine
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, ca Gecko) Chrome/92.0.4515.131 Safari/537.36

DATE FORMULARE
nume: Tai Zen
e-mail: [email protected]
numar de telefon: 12345678910
confidențialitate-consimțământ: activat
Trimite:

Ar trebui să schimb ceva din partea serverului pentru a permite solicitările POST către acel fișier specific?

Totuși, mi-aș dori să primească solicitări POST doar de la JS-ul pe care l-am scris și nu de la entități externe, dar nu știu exact cum să o fac. Am încercat ceea ce s-a sugerat acest raspuns, dar nu a funcționat, serverul a dat o eroare 500. Presupun că poate fi din cauză că am un plan de găzduire partajată și nu am acces complet la setările mele Apache, dar nu sunt sigur că acesta este motivul.

Michael Hampton avatar
drapel cz
Primul lucru de făcut este să renunți la planul de găzduire partajată și să obții propriul tău server.
Tai avatar
drapel jp
Tai
Dar este o soluție mai costisitoare pentru găzduirea unui site web static simplu cu un singur formular de contact

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.