在IIS 7.5 server 2008上获取404 for PUT和DELETE请求

时间:2014-11-26 17:01:44

标签: javascript php http iis

我已经好几天在网络应用中解决PUT,DELETE问题了。

  • 我使用REST服务器(php)
  • Windows Server 2008 R2 IIS 7.5
  • 我的服务器是在德国的contabo公司托管的专用服务器
  • 客户端使用js(sencha touch)
  • GET,POST工作正常

我的域名和我在同一台服务器上的数据库,我尝试了很多使用网络的建议:

  • 在"处理程序映射"
  • 中启用动词
  • 未安装Webdav
  • 创建web.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
 <system.webServer>   
   <httpProtocol>
     <customHeaders>
       <add name="Access-Control-Allow-Origin" value="http://example.com" />      
     <add name="Access-Control-Allow-Methods" value="GET, POST, DELETE, PUT, OPTIONS" />
     <add name="Access-Control-Allow-Credentials" value="true" />
       <add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept,*" />
     <add name="Access-Control-Max-Age" value="1000" />      
     </customHeaders>
   </httpProtocol>
 </system.webServer>
</configuration>

我也试图调解:&#39; applicationHost.config&#39; (C:\ Windows \ System32下\ INETSRV \配置):

<add name="PHP_via_FastCGI" path="*.php" verb="GET,HEAD,PUT,DELETE,POST" modules="FastCgiModule" scriptProcessor="C:\Program Files (x86)\PHP\v5.6\php-cgi.exe" resourceType="Either" />
<add name="PHP53_via_FastCGI" path="*.php" verb="GET,HEAD,PUT,DELETE,POST" modules="FastCgiModule" scriptProcessor="C:\Program Files (x86)\PHP\v5.3\php-cgi.exe" resourceType="Either" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" />

但没有: - (

  • 我也有win7和IIS 7.5的笔记本电脑,没问题,它工作得很好。
  • 我只是不知道如何在我的服务器中修复它?

感谢您的建议

2 个答案:

答案 0 :(得分:0)

我不确定问题发生的原因,但我对你的网址非常谨慎。在GET通话中,您有xxxxxx.com/php/customers.php?_dc=1417023448549&db=107&page=2&start=25&limit=25作为您的网址。只是为了解释,而不是侮辱你,如果你已经知道这一点,但查询字符串是服务器如何引用响应中返回的对象。这些值包括GET请求的_dc=1417023448549&db=107&page=2&start=25&limit=25。因此,服务器知道GET请求需要_dc值为1417023448549,db值为107的对象,依此类推。当您收到PUT请求时,您有xxxxxx.com/php/customers.php/13?_dc=1417022337273。我不确定为什么在customers.php之后还有另一个/。这就是customers.php是另一个目录。你说sencha正在创建URL。我的猜测是你在某处错误地配置了它。

答案 1 :(得分:0)

您可以在浏览器中运行它,然后使用firebug查看结果:

<强> roya4u.com/roya_se_mobile

尝试编辑联系人,然后点击&#34; 绿色&#34;按钮(保存

当我将浏览器中的链接从浏览器复制到浏览器中的新标签时:

http://roya4u.com/Roya_SE_Mobile/php/customers.php/13?_dc=1417027029131

我得到了回应!

这很奇怪?