Puncte:0

Cum să eviți să redirecționezi un POST către un GET

drapel mu

Văd asta în jurnalul meu

„POST /openDoor HTTP/1.1” 301 169 „-” „PostmanRuntime/7.29.0”

„GET /openDoor/ HTTP/1.1” 200 113 „https:///openDoor” „PostmanRuntime/7.29.0”

Fac un POST către /openDoor și primesc un 301. de ce?

Fișierul meu de configurare nginx este acesta

Server {

    client_body_buffer_size 30M;
    client_max_body_size 30M;


    locație ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;

        dimensiunea_buffer_proxy 1024k;
        proxy_buffers 32 2048k;
        proxy_busy_buffers_size 2048k;
    }


    Locație / {
        index index.php;
        try_files $uri $uri/ /index.php?q=$uri&$args =404;
    }


    error_log /var/log/nginx/error.log warn;
    access_log /var/log/nginx/access.log combinat;

    nume_server <redactat>;

    rădăcină /var/www/project;


    asculta 443 ssl; # gestionat de Certbot
    ssl_certificate /etc/letsencrypt/live/<redacted>/fullchain.pem; # gestionat de Certbot
    ssl_certificate_key /etc/letsencrypt/live/<redacted>/privkey.pem; # gestionat de Certbot
    includ /etc/letsencrypt/options-ssl-nginx.conf; # gestionat de Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # gestionat de Certbot

}

Cum să eviți această redirecționare ciudată?

Am incercat asta, fara niciun rezultat

locație /openDoor {
  add_header Cache-Control fără cache;
  expiră -1;
  add_header Cache-Control fără magazin;
  try_files /openDoor/index.php =404;
}


locație /openDoor/ {
  add_header Cache-Control fără cache;
  expiră -1;
  add_header Cache-Control fără magazin;
  try_files /openDoor/index.php =404;
}
Ivan Shatsky avatar
drapel gr
Înlocuiți `try_files $uri $uri/ /index.php?q=$uri&$args =404;` cu `try_files $uri $uri/ /index.php?q=$uri&$args;`
realtebo avatar
drapel mu
nimic nu se schimba
Ivan Shatsky avatar
drapel gr
Care este prefixul `/openDoor`? Este o rută care ar trebui procesată de controlerul central `rădăcină /var/www/project/index.php` sau este un director în care se află o aplicație web suplimentară?
realtebo avatar
drapel mu
/openDoor este un director fizic
Puncte:0
drapel gr

De cand ușă deschisă este un director fizic, nginx este cel care face asta 301 /ușă deschisă la /ușă deschisă/ redirecționare și cu redirecționarea HTTP 301, browserul utilizatorului va schimba metoda de solicitare de la POST la OBȚINE abandonarea organului de cerere. Puteți încerca să specificați Redirecționare HTTP 308 în mod explicit cu

locație = /openDoor {
    returnează 308 $request_uri;
}

Deși nu are legătură directă cu întrebarea dvs., ar trebui să înlocuiți

try_files $uri $uri/ /index.php?q=$uri&$args =404;

linie cu

try_files $uri $uri/ /index.php?q=$uri&$args;

Motivul este că try_files directiva a procesat fișierele cu Locație blocați contextul și, din moment ce nu aveți un handler FastCGI în acea locație, dvs index.php fișierul va fi servit ca text simplu. Pe de altă parte, chiar ultimul try_files parametrul va fi tratat ca un nou URI și drept locație ~ \.php$ { ... } va fi ales să-l servească.

realtebo avatar
drapel mu
Nu pot folosi o redirecționare pentru că o numesc folosind un POST (clientul, nu vina mea.. poveste lungă și tristă ca de obicei), și în acest fel am primit un POST redirecționat ca GET
Ivan Shatsky avatar
drapel gr
Vrei să spui că ai primit modificarea metodei `POST` la cea `GET` chiar și folosind redirecționarea `HTTP 308`?
realtebo avatar
drapel mu
Da, Ivan, exact.

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.