У меня есть угловое приложение, где я отправляю данные (через json) на свой сервер laravel. Мой сервер находится на ВМ (ubuntu):Отправка данных json серверу Laravel
Здесь я отправлю его на сервер из углового приложения.
this.http.post(this.loginURL, requestBody, options)
На моем Laravel сервера у меня есть маршрут:
Route::get('patientlogin','[email protected]');
и методы контроллера
public function login(Request $request){
// error_reporting(-1); // prints every error, warning, etc
error_reporting(0); // no output at all
// set content-type of response to json
header('Content-Type: application/json');
// import Auth class and custom functions
// require_once('custom_functions.php');
$LOGIN_LOG_FILE = "login1.log";
$AUTH_HEADERS_FILE = "auth-headers1.txt";
/*
php://input is raw input, regardless of header field "content-type"
The PHP superglobal $_POST, only is supposed to wrap data that is either
application/x-www-form-urlencoded or multipart/form-data-encoded
http://stackoverflow.com/a/8893792
When sending only a JSON, $_POST etc will not be populated and php://input has to be used
in the php scripts
http://stackoverflow.com/questions/1282909/php-post-array-empty-upon-form-submission
http://php.net/manual/de/wrappers.php.php
*/
$content = $request->instance();
$json_raw = $content->json()->all();
$json = json_decode($json_raw, true);
/* <-- DEBUGGING START TODO delete */
//read the header, where username and password are supposed to be in
$headers = apache_request_headers();
//print the contents of the headers array in a neat structure and log them
$headersPrintable = print_r($headers, true);
file_put_contents($AUTH_HEADERS_FILE, $headersPrintable, FILE_APPEND);
$request = print_r($_REQUEST, true);
$post = print_r($_POST, true);
file_put_contents("auth-req.txt", $request, FILE_APPEND);
file_put_contents("auth-post.txt", $post, FILE_APPEND);
file_put_contents("auth-req-json.txt", $json_raw, FILE_APPEND);
file_put_contents("auth-req-json_decoded.txt", $json, FILE_APPEND);
/* DEBUGGING END --> */
$valid = false;
$username = "";
//check if username and passord exist in the json-decoded version of php://input
if(array_key_exists("username", $json) && array_key_exists("password", $json)) {
$username = $json["username"];
$password = $json["password"];
$valid = Auth::checkCredentials($username, $password);
}
$response = array(
"username" => $username,
"valid" => $valid
);
echo json_encode($response);
//exit();
}
Теперь, когда я запускаю приложение, которое я получаю сообщение об ошибке:
POST http://ip/patientlogin 405 (Метод не допускается)
Когда я изменяю получить в моем web.php на сообщение я получаю эту ошибку:
polyfills.js:1 POST http://ip/patientlogin 500 (Internal Server Error)
и когда я пытаюсь вызвать URL в браузере:
MethodNotAllowedHttpException in RouteCollection.php line 218:
Кто-то любая идея что может быть ошибкой или что я делаю неправильно?
Это потому, что ваш маршрут является прибудете. 'Route :: get', и вы пытаетесь отправить сообщение. – Erevald
Я думаю, вам нужно проверить свои журналы ошибок или посмотреть результат ответа в инструментах разработчика, чтобы получить дополнительную информацию об ошибке. Если вы вызываете почтовый маршрут в браузере, вы получаете сообщение об ошибке, потому что браузер запрашивает через get .. поэтому сообщение должно быть точным или определить оба. –
изменить this.http.post на this.http.get или что-то, если доступно или изменить тип маршрута вашего сервера, как почтовый маршрутизатор, исключить его из csrf проверить промежуточное ПО –