Blazor WASM中Stripe支付成功重定向页面不安全问题求助
问题原因分析
你遇到的NET::ERR_CERT_COMMON_NAME_INVALID错误,核心原因是Stripe重定向的URL使用了www.localhost,但你的开发SSL证书仅针对localhost(不带www前缀)。浏览器会将www.localhost和localhost判定为两个不同域名,证书的通用名称(Common Name)或SAN扩展无法匹配,因此标记页面不安全。
手动访问成功页面正常,是因为你直接访问的是https://localhost:{port}/CheckoutSuccess,这个域名与证书匹配;而Stripe重定向的是https://www.localhost:{port}/CheckoutSuccess,与证书不匹配。
解决方案
1. 移除Domain中的www前缀
修改代码里的domain变量,去掉www.前缀:
// 原代码 string domain = "https://www.localhost:{port}/"; // 修改后 string domain = "https://localhost:{port}/";
这样Stripe生成的SuccessUrl和CancelUrl会指向localhost,与你的开发证书匹配,浏览器就不会触发证书错误。
2. 验证开发证书的SAN扩展(可选)
如果必须使用www.localhost,可以修改开发证书的SAN(Subject Alternative Name),添加www.localhost作为允许域名:
- 打开Visual Studio的「Tools > Command Line > Developer Command Prompt」
- 运行以下命令重新生成带多域名的开发证书:
dotnet dev-certs https --clean dotnet dev-certs https --trust -ep "$env:USERPROFILE/.aspnet/https/aspnetapp.pfx" -p "your-password" --subject "localhost" --san "localhost,www.localhost" - 最后在项目的launchSettings.json中配置使用该证书。
不过开发环境下,直接使用localhost(不带www)是最简便的方案。
3. 清理浏览器缓存和站点数据
修改URL后,清理浏览器的缓存、Cookie和站点数据,避免旧的重定向或证书缓存干扰测试结果。
4. 确认Stripe Session的重定向URL
创建Session后,可以打印session.SuccessUrl确认最终重定向地址是否正确,确保没有其他代码逻辑修改了该URL。
内容的提问来源于stack exchange,提问作者Travis Pettry
相关产品推荐
相关产品推荐

