Điểm:0

Cách tránh nginx chuyển hướng POST sang GET

lá cờ mu

Tôi thấy điều này trong nhật ký của tôi

"POST /openDoor HTTP/1.1" 301 169 "-" "PostmanRuntime/7.29.0"

"NHẬN /openDoor/ HTTP/1.1" 200 113 "https:///openDoor" "PostmanRuntime/7.29.0"

Tôi đang POST tới /openDoor và tôi nhận được 301. tại sao?

Tập tin conf nginx của tôi là thế này

người phục vụ {

    client_body_buffer_size 30M;
    client_max_body_size 30M;


    vị trí ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;
        bao gồm fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;

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


    địa điểm / {
        chỉ số index.php;
        try_files $uri $uri/ /index.php?q=$uri&$args =404;
    }


    error_log /var/log/nginx/error.log cảnh báo;
    access_log /var/log/nginx/access.log kết hợp;

    server_name <đã xử lý>;

    gốc/var/www/dự án;


    nghe 443 ssl; # được quản lý bởi Certbot
    ssl_certificate /etc/letsencrypt/live/<redacted>/fullchain.pem; # được quản lý bởi Certbot
    ssl_certificate_key /etc/letsencrypt/live/<redacted>/privkey.pem; # được quản lý bởi Certbot
    bao gồm /etc/letsencrypt/options-ssl-nginx.conf; # được quản lý bởi Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # được quản lý bởi Certbot

}

Làm thế nào để tránh chuyển hướng kỳ lạ này?

Tôi đã thử điều này, không có kết quả

vị trí /openDoor {
  add_header Kiểm soát bộ đệm không có bộ đệm;
  hết hạn -1;
  add_header Cache-Control no-store;
  try_files /openDoor/index.php =404;
}


vị trí /openDoor/ {
  add_header Kiểm soát bộ đệm không có bộ đệm;
  hết hạn -1;
  add_header Cache-Control no-store;
  try_files /openDoor/index.php =404;
}
Ivan Shatsky avatar
lá cờ gr
Thay thế `try_files $uri $uri/ /index.php?q=$uri&$args =404;` bằng `try_files $uri $uri/ /index.php?q=$uri&$args;`
realtebo avatar
lá cờ mu
không có gì thay đổi
Ivan Shatsky avatar
lá cờ gr
Tiền tố `/openDoor` đó là gì? Đây có phải là một tuyến đường nên được xử lý bởi bộ điều khiển trung tâm `root /var/www/project/index.php` hay nó là một thư mục chứa một số ứng dụng web bổ sung?
realtebo avatar
lá cờ mu
/openDoor là một thư mục vật lý
Điểm:0
lá cờ gr

Từ mở cửa là một thư mục vật lý, đó là nginx thực hiện điều đó 301 /mở cửa đến /mở cửa/ chuyển hướng và với trình duyệt người dùng chuyển hướng HTTP 301 sẽ thay đổi phương thức yêu cầu từ BƯU KIỆN đến ĐƯỢC từ bỏ cơ thể yêu cầu. Bạn có thể thử chỉ định Chuyển hướng HTTP 308 rõ ràng với

vị trí = /openDoor {
    trả lại 308 $request_uri;
}

Mặc dù không liên quan trực tiếp đến câu hỏi của bạn, nhưng bạn nên thay thế

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

phù hợp với

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

Lý do là try_files chỉ thị xử lý các tập tin với địa điểm chặn ngữ cảnh và vì bạn không có trình xử lý FastCGI ở vị trí đó nên bạn index.php tệp sẽ được phục vụ dưới dạng văn bản thuần túy. Mặt khác, cuối cùng try_files tham số sẽ được coi là một URI mới và bên phải vị trí ~ \.php$ { ... } sẽ được chọn để phục vụ nó.

realtebo avatar
lá cờ mu
Tôi không thể sử dụng chuyển hướng vì tôi gọi nó bằng POST (khách hàng, không phải lỗi của tôi.. câu chuyện buồn dài như thường lệ) và theo cách này, tôi đã nhận được POST chuyển hướng thành GET
Ivan Shatsky avatar
lá cờ gr
Ý bạn là bạn đã thay đổi phương thức `POST` thành phương thức `GET` ngay cả khi sử dụng chuyển hướng `HTTP 308`?
realtebo avatar
lá cờ mu
Vâng, Ivan, chính xác.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.