почему php PUT route работает в apache, а не в IIS? - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть приложение API php + laravel, размещенное в службе приложений Azure. У меня такое же приложение также размещено в apache в Azure.Остальные конечные точки работают правильно в apache, но в среде IIS все глаголы PUT не работают с ошибкой 405 (метод не разрешен) .Я еще не пробовал УДАЛИТЬ, но на основании того, что я вижу, все глаголы предперелётного перенаправления должны давать сбой.

Я потратил на это неделю, позвольте мне сначала объяснить, что я делал до сих пор;Я добавил следующее в мой web.config

<httpProtocol>
 <customHeaders>
 <add name="Strict-Transport-Security" value="max-age=31536000; includeSubDomains"/>
 <add name="Access-Control-Allow-Origin" value="*" />
 <add name="Access-Control-Allow-Headers" value="X-Requested-With,Content-Type" />
 <add name="Access-Control-Allow-Methods" value="POST,GET,OPTIONS,DELETE,PUT,PATCH" />
 </customHeaders>
 </httpProtocol>

С помощью методов контроля доступа и разрешения я мог бы пропустить вызовы OPT из моего приложения переднего плана.

Я попробовал несколько изпредложение, упомянутое в Laravel 5.1 API Enable Cors , отвечает.Также следовал http://codecipher.in/laravel-cors/, чтобы я мог избежать вызовов OPT со стороны моего клиента.Эти изменения позволили мне пропустить вызовы OPT и сделать мой PUT.К сожалению, PUT вызывает, хотя это все еще не удается.

Я позвонил в конечную точку PUT через почтальона, и получил «Невозможно отобразить страницу, которую вы ищете, потому что используется недопустимый метод (глагол HTTP).» error.В заголовках я вижу

access-control-allow-methods →POST,GET,OPTIONS,DELETE,PUT,PATCH

, но я вижу allow как

allow →GET, HEAD, OPTIONS, TRACE

Как я уже говорил, приложение, размещенное в Apache, работает очень хорошо, и я хотел бы дать емупопробуйте в IIS, прежде чем я сдаюсь и полностью перейду на Apache.

Что использует IIS, чтобы запретить вызовы глагола PUT?

Спасибо

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Для тех, кто сталкивается с той же проблемой, ответ заключается в добавлении следующего раздела в файл web.config в папке site / public.Очистите кеш и перезапустите сервер.

<system.webServer>
                            <handlers>
                                            <remove name="PHP72_via_FastCGI" />
                                            <add name="PHP72_via_FastCGI" path="*.php" verb="GET, POST, PUT, DELETE, PATCH" modules="FastCgiModule" scriptProcessor="D:\Program Files (x86)\PHP\v7.2\php-cgi.exe" resourceType="Either" requireAccess="Script" />
                            </handlers>
            </system.webServer>
0 голосов
/ 21 ноября 2018

Это зависит от конфигурации сервера.Некоторые просто решают, что не хотят разрешать такие запросы по любой причине, которую они вам дадут, как только вы их попросите.Дело в том, что не все серверы позволят вам иметь такие доступные.Я думаю, что предыдущий пост созданный может помочь вам отсортировать вашу среду IIS.Если у вас нет контроля над рабочим сервером или очень ограниченный контроль над его конфигурацией, я бы посоветовал удалить их и оставить запросы по умолчанию;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...