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 Odpověď
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