php - 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。
解决方案
我还阅读了一些问题,因为问题似乎只有在满足几个条件时才会出现,所以无法说是哪一个负责。但我想说
1)是什么导致了这个错误?
您在 Paypal 之前的最后一个请求的连接持久性
2)什么是最简单的解决方案?
不要保持这种联系。如果您知道在继续使用 Paypal 之前总是调用哪个页面,您可以添加一个标题,要求关闭连接,例如:
header("Connection: Close");
或者尝试发送带有强制浏览器重定向而不是 302 位置的代码的 JavaScript。只有当 User-Agent 是 iPhone 时才能发送此 JavaScript,并为其他人保留正常的 302 位置。注意我没有尝试,我宁愿关闭连接而不是这个。
推荐阅读
- python-3.x - Plot crosstab results using All row as benchmark lines
- c# - displaying all lines in list box from a file in WPF
- yii2 - 更改 \yii\imperavi\Widget 小部件的名称
- ruby-on-rails - Activerecord 查询:按关联模型的平均值对模型进行排序
- c++ - 如果 QTreeView 项没有子项,则禁用 QAction
- javascript - Broser 预填充输入字段,但在页面加载后
- neo4j - Neo4j 密码 ALL IN
- java - Java中输入行超过50个字符时的错误处理
- regex - 正则表达式:从日志中选择 XML 消息和时间戳
- mysql - 如果插入在事务中,则触发器不会触发