在本地与生产 Astro + Django + Nginx 上重定向时的不同行为

问题描述 投票:0回答:1

我已经使用 Astro、Django 和 Nginx 部署了一个 Web 应用程序。我正在使用 Stripe Checkout 测试与 Stripe 的集成。

所以我设置了一个html表单:

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

其中,如果处于开发模式,则为

baseDomain = http://localhost:8000/api/
;如果处于生产模式,则为
baseDomain = https://example.com/api/

/users/signup
端点由一个视图处理,该视图最终调用一个函数来重定向到条带,类似于Stripe Checkout中的示例。

在我的本地环境中测试它时,效果很好,我可以访问测试结账表单,支付产品费用,然后我会被重定向到我的自定义成功页面。

这是我的浏览器 DevTools 中“网络”选项卡的屏幕截图: enter image description here

但是在生产中我收到以下错误:

enter image description here

即使 Stripe Checkout 页面的状态正常,浏览器也会向表单端点发出 GET 请求,当然会导致方法不允许错误。

我注意到的是,请求类型从document变成了fetch,并且发起者链也不完全相同。

这是我本地环境中的发起者链 enter image description here

这是产品中的发起者链: 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;
        }
django nginx stripe-payments astrojs
1个回答
0
投票

从受影响的页面中删除

<ViewTransitions />
后,它就可以工作了。我认为这与https://github.com/withastro/astro/issues/11301有关。

© www.soinside.com 2019 - 2024. All rights reserved.