【发布时间】:2019-07-15 16:23:11
【问题描述】:
这与此question 有关。我发现当我在 YII 上检查我的 HTTPRequest 时,Yii::app()->request 使用 file_get_contents('php://input') 或 $HTTP_RAW_POST_DATA 从前端获取请求。此机制在 SSL 被禁用时起作用,但在启用时,发布数据消失。我看到了类似的question,但没有具体的解决方案,尽管有一个答案不鼓励在强制 http 到 https 时使用 302 重定向。我需要在我的 api 服务器上使用这种机制来将 http 重定向到 https。如何在不丢失帖子数据的情况下允许将 http 重定向到 https?我的 nginx 配置在这个 link 上找到。
我希望这个问题能一劳永逸地解决,因为我已经花了一个多星期的时间来解决这个问题。
【问题讨论】:
-
解决方案是不要将 HTTP 重定向到 HTTPS。如果您希望用户使用 HTTPS,为什么要将他们发送到 HTTP?
-
您不能使用正文中的数据进行重定向。身体数据将丢失。通常在 web 应用程序上处理这个问题时,我们会使用 JavaScript 技巧来强制浏览器重新提交正文而不是发送重定向响应,但是由于这是一个 API,你不能这样做。解决方案是停止强制重定向API 路由并要求您的 API 使用者切换到 HTTPS,并接受那些不切换的将不受保护。