Angular 将请求不适用于 Laravel 5.3 hosted on azure

Angular Put request not working with Laravel 5.3 hosted on azure

我正在向托管在 azure webapps 上的 Laravel 5.3 应用程序发送 PUT 请求。但是我收到延迟响应 504(网关超时)。当它在 POSTman(chrome 扩展)上工作时。

这是我的 angular 代码:

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

并且 运行 这会在 1 分钟后 504(网关超时)

我还设置了 web.config 来处理 PUT 和 DELETE。详细描述了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>

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

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

截至 angular,这对我有用。

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

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