Различное поведение при перенаправлении на локальном и производственном Astro + Django + Nginx

Я развернул веб-приложение, используя Astro, Django и Nginx. Я тестирую интеграцию со Stripe с помощью Stripe Checkout.

Итак, я создал html-форму:

<form method="post" action=`${baseDomain}users/signup`>
...
</form>

где baseDomain = http://localhost:8000/api/ если в режиме dev и baseDomain = https://example.com/api/ в режиме production.

Конечная точка /users/signup обрабатывается представлением, которое в итоге вызывает функцию для перенаправления на stripe, подобно примеру в Stripe Checkout.

При тестировании в моей локальной среде он работает отлично, я могу получить доступ к тестовой форме оформления заказа, оплатить товар и быть перенаправленным на мою пользовательскую страницу успеха.

Вот скриншот вкладки Network в моем браузере DevTools: enter image description here

Однако в производстве я получаю следующую ошибку:

enter image description here

Несмотря на статус OK для страницы Stripe Checkout, браузер выдает GET-запрос обратно к конечной точке формы, что, естественно, приводит к ошибке method not allowed.

Что я могу заметить, так это то, что тип запроса изменился с document на fetch, а цепочка инициаторов не совсем та же.

Вот цепочка инициаторов в моей локальной среде enter image description here

Это цепочка инициаторов в prod: enter image description here

Я пробовал перенаправлять только на «https://google.com» и получал ошибку CORS. Это заставляет меня думать, что тип «fetch» отвечает за ошибку при перенаправлении, но я не понимаю, почему это происходит на производстве, а не в моей локальной среде. Более того, Astro развернут в статическом режиме.

Вот моя конфигурация nginx:

 root /myproject/frontend/dist;

        # Add index.php to the list if you are using PHP
        index index.html;
        server_name example.com; # managed by Certbot


        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

        location /api {
                proxy_pass http://127.0.0.1:8000;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
        }

После удаления <ViewTransitions /> с затронутой страницы все работает. Я думаю, что это связано с https://github.com/withastro/astro/issues/11301.

Вернуться на верх