Ru-Board.club
← Вернуться в раздел «Web-программирование»

» Запуск обработки POST от сервиса

Автор: f0d418nnT
Дата сообщения: 07.09.2016 09:25
Добрый день,
Есть сервис который отправляет данные на сервер POST-запросом на адрес вида https://site.ru/api. На сервере имеется папка /api, в которой лежит скрипт index.php для обработки поступающих POST-запросов и .htaccess с директивой DirectoryIndex index.php.
В файле access.log сервера видно, что запросы поступают, но сервер не передает управление в index.php.
Если обращаться из браузера GETом на этот же адрес, то index.php запускается.
В каком направлении рыть, чтобы скрипт запускался при поступлении POST-запроса от сервиса?
Автор: Mavrikii
Дата сообщения: 07.09.2016 09:33
f0d418nnT
GET и POST, в своей основе, одно и то же, лишь несколько иначе передаются данные.

Цитата:
что запросы поступают, но сервер не передает управление в index.php.

и какой ответ отдает? какого размера в байтах?
а если запостить в /api/ или прямо в /api/index.php ?

Цитата:
каком направлении рыть, чтобы скрипт запускался при поступлении POST-запроса от сервиса?

смотреть содержимое .htaccess, конфиг сервера и, хотя бы, index.php на наличие чего то особенного в отношении POST запроса.
Автор: f0d418nnT
Дата сообщения: 07.09.2016 09:59

Цитата:
и какой ответ отдает? какого размера в байтах?

Ответ дает 301 - Moved permanently, размер 239 байт. Т.е. получается, что какой-то скрипт он ищет раз говорит, что он перемещен. А как определить имя скрипта, который он ищет?

Цитата:
а если запостить в /api/ или прямо в /api/index.php ?

Пост отправляет сервис, поэтому я не могу посмотреть ни заголовки, ни данные, которые идут в посте пока не запущу свой скрипт.
К примеру, когда мы отправляем POST из какой-нибудь своей формы, то указываем там атрибут action, в котором пишем скрипт для обработки запроса. Если, допустим, не указывать action, то сервер передаст управление скрипту, который вывел эту форму. Но в данном случае POST приходит от внешнего источника, поэтому не ясно куда должен сервер передать управление. И какой у него action стоит (если вообще он есть) я не знаю как определить.
Автор: Mavrikii
Дата сообщения: 07.09.2016 10:04
f0d418nnT

Цитата:
Ответ дает 301 - Moved permanently, размер 239 байт

ну вот вам и ответ. перекидывает на /api/, скорее всего.
то же самое делает и GET, только вы тогда идете браузером, а не сам сервис. а сервис, видимо, не хочет следовать редиректу.

http://httpd.apache.org/docs/current/mod/mod_dir.html#directoryslash
внимательно прочитайте предупреждение по ссылке.
и, на будущее, вопросы настройки апача (или другого сервера) обсуждаются в разделе "в помощь сисадмину"

либо, что может быть проще, сделайте в системе /api символической ссылкой на index.php
Автор: f0d418nnT
Дата сообщения: 07.09.2016 11:00

Цитата:
сервис, видимо, не хочет следовать редиректу

Да, действительно, редиректа на /api/ нет. Спасибо, что разъяснили.

Цитата:
вопросы настройки апача (или другого сервера) обсуждаются в разделе "в помощь сисадмину"

С этим понятно.

Цитата:
сделайте в системе /api символической ссылкой на index.php

Апач установлен под Wndows поэтому со ссылкой не получится. А других вариантов никаких нет?
Автор: Mavrikii
Дата сообщения: 07.09.2016 11:06
f0d418nnT

Цитата:
А других вариантов никаких нет?

я же дал ссылку на опцию конфига


Код: <Location "/api">
DirectorySlash Off
SetHandler application/x-httpd-php
</Location>
Автор: f0d418nnT
Дата сообщения: 07.09.2016 14:54
Теперь сервер отвечает 403 Forbidden. От самого корня сайта сделал AllowOverride all, Require all granted - бесполезно.


Добавлено:
Все разобрался.
В .htaccess:
RewriteEngine On
RewriteRule ^api index.php [QSA,L]

Location и Alias убрал.
Автор: Mavrikii
Дата сообщения: 07.09.2016 20:47
f0d418nnT

Цитата:
Все разобрался.

можно и так ) сорри, было поздно, поэтому и идеи лезли не совсем удобные.
как то забыл про mod_rewrite (дано перешел на nginx)
ну и тоже, на будущее - mod_rewrite: документация, готовые решения, вопросы
Автор: f0d418nnT
Дата сообщения: 08.09.2016 08:10
Спасибо за помощь. Можно тему закрывать.

Страницы: 1

Предыдущая тема: Меню аккордеон с куками


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.