Request POST mi vypisuje chybu 405 Method Not Allowed
Dobrý den, v Laravel aplikácii mám vytvorený testovací REST API a POST request, ktorý má vrátiť hodnotu „test“. Testujem to na lokálnom webservri Apache (WAMP) a funguje to, ale na wedos webhostingu (POST: bigoo.eu/subdom/API/public/index.php/api/post) mi vypisuje chybu „405 Method Not Allowed“.
Pravdepodobne je to problém v nastaveniach v „.htaccess“, ktorý mám aktuálne nastavený takto:
RewriteEngine On # cele domeny (aliasy) RewriteCond %{REQUEST_URI} !^domains/ RewriteCond %{REQUEST_URI} !^/domains/ RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$ RewriteCond %{DOCUMENT_ROOT}/domains/%2 -d RewriteRule (.*) domains/%2/$1 [DPI] # subdomeny (s nebo bez www na zacatku) RewriteCond %{REQUEST_URI} !^subdom/ RewriteCond %{REQUEST_URI} !^/subdom/ RewriteCond %{HTTP_HOST} ^(www\.)?(.*)\.([^\.]*)\.([^\.]*)$ RewriteCond %{DOCUMENT_ROOT}/subdom/%2 -d RewriteRule (.*) subdom/%2/$1 [DPI] # aliasy - spravne presmerovani pri chybejicim / RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^domains/[^/]+/(.+[^/])$ /$1/ [R] # subdomeny - spravne presmerovani pri chybejicim / RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^subdom/[^/]+/(.+[^/])$ /$1/ [R] RewriteCond %{HTTPS} !=on RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Prosím o pomoc, ako (a čo?) nastaviť aby fungoval POST request.
3 Answers
Zdravím,
s Laravel nemám zkušenosti, ale vypadá to že to tam neposíláte přes POST.
Zkusil jsem tu URL dát do https://reqbin.com/ a poslat tam něco přes POST a normálně to projde. Respektive skončí na chybě 500.
ErrorException: Undefined index: test in file /data/web/virtuals/107149/virtual/www/subdom/API/app/Http/Controllers/API/RegisterController.php on line 20
To samé vrátil i jiný online nástroj. Na GET vrací 405. Zkuste to poslat přes POST normálně z formuláře.
Dobrý den,
toto je výchozí .htaccess, ten chybu nezpůsobuje. Dle všeho máte chybu v kódu, přiložte sem Váš kód.
Nefunguje žiadny route typu POST (na lokále mi to beží). Tu je najjednoduchší z nich (písané v Laravel, ver.7):
súbor route-ov „api.php“:
/* testovacie routy: */ Route::get('info','API\RegisterController@info'); Route::post('post','API\RegisterController@post');
súbor kontrolér „RegisterController.php“:
class RegisterController extends BaseController { public function info() { return 'Toto je info z register kontrolera.'; } public function post(Request $request) { $input = $request->all(); $success = 'test: '. $input['test']; return $this->sendResponse($success, 'test post is OK'); }
A v utilite „Postman“ mám:
POST bigoo.eu/subdom/API/public/index.php/api/post
a v „Body/form-data“ nastaviť:
key: value: test 123456789