我在我的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>
答案 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