PHP IIS7动词PUT get数据

PHP IIS7动词PUT get数据,php,iis-7,httpverbs,Php,Iis 7,Httpverbs,我还有一个问题类似于我在这里问的一个问题: 然而,这次我处理的是PUT动词。我在阅读php中的put数据时应使用以下内容: file_get_contents("php://input") 资源: 然而,就目前而言,这似乎不起作用。我觉得这可能与IIS 7有关,可能会删除数据?。。我安装了webDav,必须删除它才能解析put谓词。我想知道IIS中是否还有其他东西可能阻止在服务器级别解析数据 我的ajax请求如下所示 var data = '{"storyId

我还有一个问题类似于我在这里问的一个问题:

然而,这次我处理的是PUT动词。我在阅读php中的put数据时应使用以下内容:

file_get_contents("php://input")
资源:

然而,就目前而言,这似乎不起作用。我觉得这可能与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);
                    },
                });

PUT
DELETE
通过
$。并非所有浏览器都支持ajax
POST
GET
是所有浏览器都支持的两种浏览器

如需参考,请查看`$.ajax上的jQuery文档:

此外,您需要更改HTTP守护进程的设置,以允许脚本访问put。通过将以下内容添加到root.htaccess来完成此操作:

Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ handler.php?uri=$1 [L,QSA]
请注意,要进行这些修改,您必须访问
mod_rewite


请参见php文档中的
PUT
此处:

WooHoo多亏了这个问题,我才找到了答案

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

file_get_contents("php://input")
在第一次读取时,它将获得所有数据。但是,第二次像这样使用它获取数据的尝试将返回null。波斯特的情况并非如此。我只需要这样做,我们只需要像上面那样请求一次数据

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

从我的研究来看,大多数当前浏览器都支持ajax PUT、DELETE。但是HTML5已经从标准中删除了它,我假设这只影响html而不是Javascript?我尝试在IIS7中添加URL重写,但它不喜欢重写基线/行。你能再解释一下这是怎么回事吗?这可能有助于将数据公开给php。谢谢