PHP IIS7 VERB PUT获取数据


PHP IIS7 VERB PUT get data

我还有一个问题,类似于我在这里问的一个问题:JS Ajax调用PHP并获取Ajax调用数据

不过这次我要处理PUT动词。我正在阅读以获取php中的put数据应该使用以下内容:

file_get_contents("php://input")

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

然而,对于put来说,这个剂量似乎不起作用。我觉得这可能与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);
                    },
                });
并非所有浏览器都支持通过$.ajaxPUTDELETE。CCD_ 4和CCD_。

如需参考,请在此处查看`$.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的访问权限才能进行这些修改。

请在此处查看php关于PUT的文档:http://php.net/manual/en/features.file-upload.put-method.php

WooHoo多亏了这个问题,我明白了。

PHP获取PUT请求正文

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

file_get_contents("php://input")

在第一次读取时,它将获得所有数据。然而,第二次尝试像这样使用它获取数据时将返回null。POST的情况并非如此。我只需要做一次,这样我们就只需要像上面这样的数据一次。

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