В моем routes/api.php
у меня есть маршрут метода POST как таковой:
Route::post('hello', 'MyController@greet');
В app/Http/Controllers/MyController.php
метод greet()
определяется следующим образом:
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class MyController extends Controller
{
public function greet(Request $request)
{
return response()->json(['not found'], 404);
}
}
Теперь, в зависимости от протокола URL, который вызывал, ответ возвращает совершенно разные сообщения:
Вызов с POST https : // localhost / hello вернется 404 Не найдено ответа:
[
"not found"
]
, как и ожидалось.
Где при вызове с POST http : // localhost / hello (без http s ) он вернет 405 Метод Не разрешен ответвместо этого:
{
"message": "The GET method is not supported for this route. Supported methods: POST."
}
Это проблема, потому что я настраиваю свой сервер за AWS ELB, который принимает только HTTPS-трафик, но маршрутизирует обратно к экземплярам Auto Scaling через HTTP в локальной сети VPC.
Итак, мой вопрос в том, что является причиной этого, и как я могу запретить Laravel возвращать другой ответ, основанный на протоколе URL?
EDIT: Обратите внимание, что это происходит только тогда, когда я указываю код состояния в response()->json($data, [status code])
.В противном случае ответ работает нормально, как и ожидалось.