kyl*_*ejm 2 php post http heroku http-post
为什么我的 PHP 脚本没有接收到由 Heroku 托管的另一个域上的 html 表单设置的 POST 参数?
语境:
我有一个简单的 html 表单,它将一些用户数据发送到我放在 Heroku 上的 PHP 脚本。该表单位于不同的站点/域上,但据我所知,同源策略不应中断请求。事实上,我已经测试过将请求从表单发送到我的本地机器,并且脚本运行良好。
请求从 html 表单正常正常触发,但是当它到达我的 PHP 脚本时,$_POST 数组是空的。检查 Heroku 日志后,实际上看起来我的脚本将 POST 请求作为 GET 接收。
是否有我没有做过的配置/路由事情(我是 Heroku 的新手)?
我查看了其他几个类似这样的问题/答案,但还没有解决方案对我有用。
非常感谢您的帮助
更新 1 (4/4/12)
正如 CoR 在他的回答中所描述的那样,POST 请求似乎正在被移动。我不知道如何阻止这种情况发生。通过研究,似乎只有当您不通过 https 发出 POST 请求时才会发生这种移动。
现在我已经提交并将表单方法更改为 GET,这很好用。很高兴知道是否可以在不设置 SSL 的情况下在 Heroku 应用程序上启用 POST 请求。
更新 2 (6/4/12)
我刚刚用 Heroku 打开了一张票,以了解支持 POST 请求的唯一方法是否是启用 SSL。我当然在此处询问之前查看了他们的文档以寻求答案,但是没有描述与 CoR 回答时移动 POST 相关的任何内容。当他们回复我时,我会在此处发布 (...) 答案。
我花了几天时间才将 url 重定向理解为可理解的定义。\n它们是:
\n\n301 \xe2\x80\x93 Permanently moved: breaks POST\n302 \xe2\x80\x93 Temporarily moved: legacy, will change POST to GET\n303 - Temporarily moved: WILL change POST to GET\n307 - Temporarily moved: NOT change POST to GET\nRun Code Online (Sandbox Code Playgroud)\n\n编辑:
\n\n\n\n\n看起来,只有当您不通过 https 发出请求时,才会发生这种 POST 请求的移动。
\n
是的,我忘记了人们通常使用重定向来统一尾部斜杠,www。并强制执行 http 或 https 协议。
\n您可能猜测 301 或 302 重定向可能会破坏 POST。使用 307 修复它或写信给网站管理员,他可能会也可能不会“修复它”。
\n这取决于它是否会破坏其他内容,或者该网站可能想强制用户始终使用 https!在这种情况下,301 是理想的解决方案,因为通过不安全的 http 协议发送 POST 会被自动丢弃/转换为 GET 请求。
\n如果服务器使用 https 并不重要,例如,如果首次登录数据是通过 http 发送的。
\n\n\n当然,如果知道是否可以在不设置 SSL 的情况下在 Heroku 应用程序上启用 POST 请求,那就太好了。
\n
尽管技术上可行,但禁用通过 http 的 POST 并强制其仅使用 https 是有效的服务器策略。
\n好的!终于拿到了!在一个超级棒的 Heroku 团队在大约 10 分钟内回复我之后,结果证明这是一个愚蠢的错误。
我的表单将它的请求发送到http://MYAPP.heroku.com,而一个人的 Heroku 应用程序实际上是在http://MYAPP.herokuapp.com. 就这样。很明显,当我的请求被发送到http://MYAPP.heroku.com.
更重要的是,当(正确)使用herokuapp.com域时,您可以通过 HTTPS 发送请求,尽管通过 HTTP 发送 POST 请求可以正常工作。
该SLL的Add-On是只有当你有一个自定义域,并想启用SSL它。
| 归档时间: |
|
| 查看次数: |
3036 次 |
| 最近记录: |