2017-02-03 9 views
1

Я отправляю запрос PUT на мое приложение Laravel 5.3, которое размещено на веб-сайтах azure. Но я получаю отложенный ответ 504 (Gateway Timeout). Пока он работает над POSTman (расширение chrome).Угловой запрос запроса не работает с Laravel 5.3 размещен на azure

это мой угловой код:

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

И работает это дало бы мне 504 (шлюз Timeout) мин

после 1 У меня есть также установка 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

Есть ли [это сообщение] (https://social.msdn.microsoft.com/Forums/azure/en-US/c5aa7b7b-59e6-4644-999f-b7f06eb79bb7/azure-http-504-gateway -timeout-wlong-запросы) помогут вам? –

+0

Нет, проблема связана только с запросами PUT, запросы DELELTE работают нормально. –

ответ

0

Итак, поскольку серверы Apache и IIS отличаются. IIS не обрабатывает PUT и DELETE по умолчанию. Он также обрабатывает параметры для запроса PUT по-разному.

Вместо тела вам необходимо отправить его в строке запроса, например ../resource?param1=value1. AKA x-www-form-urlencodedThis 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