首页 > 解决方案 > PHP 重定向 - (SNI) 错误定向请求客户端需要新连接 - 主机与服务器名称指示不匹配

问题描述

在收到贝宝付款后,我将客户重定向到另一个域。我正在使用这个 PHP 代码:

<?php
header("Location: https://www.domain_example_2.com");
?>

它似乎在大多数设备上都能正常工作。但是有几个人在 iPhone 上报告了这个错误:

请求错误,客户端需要一个新的连接,因为请求的主机与用于此连接的服务器名称指示 (SNI) 不匹配

收到贝宝交易确认 PDT 的域是 www.domain_example_1.com 它获取详细信息然后将用户发送到另一个域 www.domain_example_2.com 登录。

它在其他设备上运行良好。

这些域托管在同一个多 SANS 下的两个域的 godaddy 上。


1)是什么导致了这个错误?

2)什么是最简单的解决方案?


我已经阅读了一些关于将多 SANS 视为问题并为该域获得单独证书的想法。在 Godaddy 方面也更改了设置。

如果是 PHP 重定向 - 是否有其他方法不会触发此错误?

我想使用一个域来处理 PDT 交易 - 我希望在交易后将客户发送到多个其他域。

我不想拥有多个贝宝账户——因为贝宝只允许一个 PDT URL。

我不认为这个错误与贝宝有任何关系。但似乎确实只影响 iphone。

标签: phpiosredirectsni

解决方案


我还阅读了一些问题,因为问题似乎只有在满足几个条件时才会出现,所以无法说是哪一个负责。但我想说

1)是什么导致了这个错误?

您在 Paypal 之前的最后一个请求的连接持久性

2)什么是最简单的解决方案?

不要保持这种联系。如果您知道在继续使用 Paypal 之前总是调用哪个页面,您可以添加一个标题,要求关闭连接,例如:

header("Connection: Close");

或者尝试发送带有强制浏览器重定向而不是 302 位置的代码的 JavaScript。只有当 User-Agent 是 iPhone 时才能发送此 JavaScript,并为其他人保留正常的 302 位置。注意我没有尝试,我宁愿关闭连接而不是这个。


推荐阅读