/ / Laravel HTTPS URL random chars? - laravel, ssl, nginx

Laravel HTTPS URL random chars? - laravel, ssl, nginx

Acabei de configurar minha API personalizada no meusubdomínio, com um certificado SSL usando NGINX. Tudo funciona muito bem (obter pedidos, etc) no entanto, sempre que eu tentar autenticar recebo um 401 "credenciais inválidas".

Quando eu morro e despejo $request->all(); Eu descobri que de repente eu tenho um parametro GET extra chamado "q"? Para https://api.domain.com/api/v1/login?email=test@test.com&password=test Minhas credenciais de repente se tornaram:

q => email=test@test.com
password => test

Eu estou absolutamente perplexo, alguém tem uma idéia do que está acontecendo? Isso aconteceu quando eu ativei meu certificado SSL.

Eu suponho q é para consulta .. Além disso, aqui está o meu arquivo de rotas:

Route::get("/", function() {
return "Welcome to API";
});

/* API Version 1 */
Route::group(["prefix" => "v1", "middleware" => "cors"], function() {

Route::post("/login", "AuthController@authenticate");

Route::group(["middleware" => ["jwt.auth"]], function() {
Route::resource("users", "UsersController", ["only" => ["index", "show", "store"]]);
Route::resource("rooms", "RoomsController", ["only" => ["index", "show"]]);
Route::resource("reservations", "ReservationsController");
Route::resource("customers", "CustomersController");

Route::get("rooms/{id}/reservations", "ReservationsController@getReservationsByRoom");
Route::get("users/{id}/reservations", "ReservationsController@getReservationsByUser");
Route::get("users/{id}/customers", "CustomersController@getCustomersByUser");
Route::get("reservations/{id}/customer", "CustomersController@getCustomerByReservation");

Route::get("me", "UsersController@getAuthenticatedUser");
Route::get("me/reservations", "ReservationsController@getReservationsByAuthenticatedUser");
Route::get("me/customers", "CustomersController@getCustomersByAuthenticatedUser");
});
});

TIA

Respostas:

2 para resposta № 1

Qual versão do Laravel?

Eu não vi esse comportamento (reescrevendo parâmetros); Eu ficaria muito surpreso se o Laravel fosse de fato o culpado (e um pouco desapontado).

Se você está usando o Laravel 5.3 (e talvez 5.2, não tenho certeza), você pode usar $ request-> getContent () para ver o objeto inteiro da requisição como visto pelo Laravel. Como o comentário abaixo sugere, eu concordo que não é o Laravel e mais provavelmente um problema com a sua configuração (especialmente considerando que é quando você habilitou o HTTPS).

O Laravel não lida com a camada de segurança (https), o seu servidor web, portanto, a partir do POV http === https do Laravel, e ele não deveria se importar de nenhuma maneira.


0 para resposta № 2

Eu vi em vários casos que o Laravel forçou o HTTPS com o Mod Rewrite, então você pode querer dar uma olhada nisso, talvez isso ajude.


0 para resposta № 3

Eu encontrei a solução. Era de fato a minha configuração NGINX, o Laravel não faria uma coisa dessas. É melhor ter menos reescritas quanto possível. Esta foi a minha configuração padrão do meu /etc/nginx/sites-available/default:

location / {
try_files $uri $uri/ /index.php?q=$query_string;
}

Removendo o q antes da query string resolve meu problema.

Obrigado por todos os seus insights