Недавно у меня начались проблемы с CORS, так как многие имели удовольствие до меня. Я смог решить проблему для моей локальной среды, используя следующие настройки. В настоящее время приложение все еще находится в разработке, поэтому я знаю, что, вероятно, следует ограничить использование CORS Origins перед выпуском приложения.
CORS-связующее ПО
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
header('Access-Control-Allow-Origin: *');
//ALLOW OPTIONS METHOD
$headers = [
'Access-Control-Allow-Methods' => 'POST, GET, OPTIONS, PUT, DELETE',
'Access-Control-Allow-Headers' => 'Content-Type, X-Auth-Token, Origin, Authorization',
];
if ($request->getMethod() == "OPTIONS"){
//The client-side application can set only headers allowed in Access-Control-Allow-Headers
return response()->json('OK',200, $headers);
}
$response = $next($request);
foreach ($headers as $key => $value) {
$response->header($key, $value);
}
return $response;
}
Ядро
protected $middleware = [
//Other middlewares
\App\Http\Middleware\Cors::class,
];
Это решило проблему, с которой я столкнулся в CORS в моя местная среда (усадьба). К сожалению, сейчас мои тесты не пройдены в CircleCI. Поэтому вопрос заключается в том, как я могу включить CORS, чтобы мои тесты снова запускались.
Пример теста
public function test_we_can_retrieve_all_places() {
$response = $this->get('api/places');
$response
->assertStatus(200);
}
Результат теста: Ожидаемый код состояния 200, но получено 500. Не удалось подтвердить, что false - это правда.