PHP IIS7 VERB PUT获取数据

时间:2012-07-13 22:21:11

标签: php iis-7 httpverbs

我还有一个问题,类似于我在这里提出的一个问题: JS Ajax calling PHP and getting ajax call data

然而这次我正在处理PUT动词。我正在阅读以获取PHP中的数据应该使用以下内容:

file_get_contents("php://input")

资源:http://www.lornajane.net/posts/2008/accessing-incoming-put-data-from-php

然而,对于这个似乎并没有起作用。我觉得它可能与IIS 7可能有关,可能会删除数据?..我安装了webDav并且必须删除它才能得到put动词来解决,我想知道IIS中是否有其他东西阻止数据来自在服务器级解析?

我的ajax请求如下所示

                var data = '{"storyId":"2","storyName":"a Changed Story.","authorId":"5", "published":"1"}'; 

                $.ajax({
                    type: "PUT",
                    url: BaseUrl + "Story/2",   
                    data: data,
                    success: function(data){
                        console.log(data);
                    },
                    error: function(request){
                        console.log(request);
                    },
                });

2 个答案:

答案 0 :(得分:1)

所有浏览器都不支持{p> PUTDELETE来自$.ajaxPOSTGET是所有浏览器都支持的唯一两个。

供参考,请查看`$ .ajax的jQuery文档: http://api.jquery.com/jQuery.ajax/

此外,您需要更改HTTP守护程序的设置以允许脚本访问put。这是通过将以下内容添加到根.htaccess:

来完成的
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ handler.php?uri=$1 [L,QSA]

请注意,您必须有权mod_rewite进行这些修改。

请参阅PUT上的php文档:http://php.net/manual/en/features.file-upload.put-method.php

答案 1 :(得分:1)

WooHoo我想通了这个问题。

PHP get PUT request body

出于某种原因,如果您要求“PUT”这样的数据

file_get_contents("php://input")

在第一次阅读时,它将获得所有数据。但是第二次尝试使用它来获取数据将返回null。 POST不是这种情况。我只需要这样做,以便我们只需要像上面那样请求一次数据。

我的理论(可能是BS); ) 我认为它读取PUT请求的方式就像读取文件或流,如果有一种方法可以将读取器设置为重新启动可能会获得该数据。这只是我关于它是如何工作的理论我没有任何资源支持这样的工作。