Angular Put请求不适用于在azure上托管的Laravel 5.3

时间:2017-02-03 12:45:48

标签: angularjs azure-web-sites laravel-5.3 put

我在我的Laravel 5.3应用程序上发送PUT请求,该应用程序托管在azure webapps上。但我收到延迟回复 504(网关超时)。它正在开发POSTman(chrome扩展)。

这是我的角度代码:

put : function (id, params) {
  params.api_token = TOKEN;
  return $http.put(url+'/lead/'+id, params);
},

运行此操作会在1分钟后给我 504(网关超时)

我还设置了 web.config 来处理PUT&删除。详细描述了here

<handlers>
    <remove name="PHP54_via_FastCGI" />
    <add name="PHP54_via_FastCGI" path="*.php" verb="GET, PUT, POST, HEAD, OPTIONS, TRACE, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, UNLOCK" modules="FastCgiModule" scriptProcessor="D:\Program Files (x86)\PHP\v5.4\php-cgi.exe" resourceType="Either" requireAccess="Script" />
</handlers>

1 个答案:

答案 0 :(得分:0)

所以,因为Apache和IIS服务器不同。默认情况下,IIS不处理PUT和DELETE。它还以不同的方式处理PUT请求的参数。

您需要在../resource?param1=value1之类的查询字符串中发送,而不是正文。 AKA x-www-form-urlencoded This article explains it thoroughly

从角度来看,这对我有用。

 function (id, params) {
        params.api_token = TOKEN;
        var params = $httpParamSerializerJQLike(params);
        return $http.put(url+'/lead/'+id+'?'+params);
    }

注意:此外,您的web.config确实需要<handler>个标记才能处理这些请求。定义为here