CORS middleware 간단설정
Submitted by laravelfanatic -
등록 9 years ago - 수정 9 years ago
Ajax활용시 CORS설정을 해주지 않으면 브라우정에서 다른 도메인 주소로 Ajax요청을 하는것이 불가능하게 되어있다.
브라우저 정책상의 문제로 다른 매체로 링크활용시에는 아무런 문제없다.
간단한 예로 alpha.com 이란 사이트가 있으면 alpha.com/api/v1/get_something 과 같은 주소로 Ajax요청을 하는 것은 가능하지만 beta.com/api/v0/another_thing 으로 접속하려할 경우 브라우저는 에러를 내보낼것이다(Response에 아무것도 들어오지않는다.)
이를 해결하기 위해선 beta.com 에서 자신으로 부터 받은 데이터를 alpha.com 도메인에서도 사용이 가능하다고 알려줄 필요가 있다.
이에 HTTP Header에
Access-Control-Allow-Origin
Access-Control-Allow-Methods
Access-Control-Allow-Headers
를 추가한다.
이에 다음과 같은 코드가 필요하다.
<?php namespace App\Http\Middleware;
use Closure;
class EnableCors {
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$headers = [
'Access-Control-Allow-Origin' =>' *',
'Access-Control-Allow-Methods'=>' POST, GET, OPTIONS, PUT, DELETE',
'Access-Control-Allow-Headers'=>' Content-Type, Accept, Authorization, X-Requested-With'
];
if($request->getMethod() == "OPTIONS") {
return \Response::make('OK', 200, $headers);
}
$response = $next($request);
foreach ($headers as $key => $value) {
$response->header($key, $value);
}
return $response;
}
}
Stats
-
1 like
- 2811 views