Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Heroku上作为GET请求接收的POST请求_Php_Http_Post_Heroku_Http Post - Fatal编程技术网

Php 在Heroku上作为GET请求接收的POST请求

Php 在Heroku上作为GET请求接收的POST请求,php,http,post,heroku,http-post,Php,Http,Post,Heroku,Http Post,为什么由另一个域上的html表单设置的POST参数没有被Heroku托管的PHP脚本接收 背景: 我有一个简单的html表单,它向我放在Heroku上的PHP脚本发送一些用户数据。表单位于不同的站点/域,但据我所知,同源策略不应破坏请求。事实上,我已经测试过将请求从表单发送到本地机器,脚本运行良好 请求通常从html表单发出,但是当它到达我的PHP脚本时,$\u POST数组是空的。在检查Heroku日志之后,POST请求实际上看起来像是通过我的脚本接收的 是否有一件配置/路由的事情我没有做


为什么由另一个域上的html表单设置的POST参数没有被Heroku托管的PHP脚本接收



背景:

我有一个简单的html表单,它向我放在Heroku上的PHP脚本发送一些用户数据。表单位于不同的站点/域,但据我所知,同源策略不应破坏请求。事实上,我已经测试过将请求从表单发送到本地机器,脚本运行良好

请求通常从html表单发出,但是当它到达我的PHP脚本时,$\u POST数组是空的。在检查Heroku日志之后,POST请求实际上看起来像是通过我的脚本接收的

是否有一件配置/路由的事情我没有做过(我是Heroku的新手)

我看了两个其他问题/答案,如,但没有解决方案对我有效

非常感谢您的帮助



更新1(4/4/12)

正如CoR在其回答中所述,POST请求似乎正在被移动。但我不知道如何阻止这种事情发生。从周围的研究来看,这种POST请求的移动似乎只有在您不通过https发送的情况下才会发生

现在,我已经提交并更改了forms方法以获取,效果很好。当然,如果您能在Heroku应用程序上启用POST请求而不设置SSL,那就太好了



更新2(6/4/12)


我刚刚和Heroku开了一张罚单,看看支持POST请求的唯一方法是否是启用SSL。在这里提问之前,我当然查阅了他们的文档以获得答案,但是没有任何关于CoR所回答的帖子被移动的相关描述。我将发布(我花了几天的时间来考虑url重定向到可理解的定义。 这是:

301 –   Permanently moved:  breaks POST
302 –   Temporarily moved:  legacy, will change POST to GET
303 -   Temporarily moved: WILL change POST to GET
307 -   Temporarily moved: NOT change POST to GET
编辑:

看起来,只有在您 不是通过https制作的

是的,我忘记了人们通常使用重定向来统一URL、www和强制http或https协议。
正如您可能猜到的,301或302重定向可能会破坏帖子。请使用307或写信给网站管理员进行修复,他可能会也可能不会“修复”。
这取决于它是否会破坏其他内容,或者该网站想要强制其用户始终使用https!在这种情况下,301是理想的解决方案,因为通过不安全的http协议发送帖子会自动放弃/转换以获取请求。
服务器是否使用https并不重要,例如,第一个登录数据是通过http发送的

当然,如果能够在上启用POST请求,那就太好了 他们的Heroku应用程序没有设置SSL


虽然技术上可行,但禁用http上的POST并强制其仅使用https是有效的服务器策略。

好吧!终于得到了!超级棒的Heroku团队之一在大约10分钟后回复我,结果证明这是一个愚蠢的错误

我的表单正在将其请求发送到
http://MYAPP.heroku.com
,而Heroku应用程序实际上位于
http://MYAPP.herokuapp.com
。仅此而已。显然,当我的请求被发送到
http://MYAPP.heroku.com

此外,当(正确地)使用
herokuapp.com
域时,您可以通过HTTPS发送请求,尽管通过HTTP发送POST请求也可以


只有当您有自定义域并且希望为其启用SSL时,才能使用。如果请求由服务器重定向(3xx响应代码),则可以将其更改为GET。更新我的答案:)谢谢@CoR!我想我的问题的答案是,如果不向Heroku应用程序添加SSL支持,你就无法解决这个问题。Heroku应用程序每月的成本为20美元。我想我现在会补充这一点作为答案。事实上,我会再次询问Heroku并询问他们。太棒了,谢谢。我怎么修理它?当然你可以获得Heroku应用程序的POST请求?尝试了解你的请求被重定向的方式和原因。人们通常创建自动重定向来添加/删除www或从url中删除。301和302将始终将post转换为get标题。307将保留该职位。