로컬 환경에서 프레임워크를 사용하지 않는 php 개발을 하게 되었다.
session_start() 함수를 호출하면 header 에 아래와 같은 정보가 생성된다.
Set-Cookie: PHPSESSID=mvegl320ck40kktumvpebptki6; path=/
크롬 브라우저에서 이런 헤더 응답받았으면 쿠키값에 저장을 해야 하는데 PHPSESSID 가 저장이 안되는 문제가 생겼다.
크롬의 정책때문이라고 하는데 아래와 같이 변경해줘야 한다.
$res = @session_start($options);
$headers = headers_list();
foreach ($headers as $header) {
if (!preg_match('~^Set-Cookie: PHPSESSID=~', $header)) continue;
$header = preg_replace('~; secure(; HttpOnly)?$~', '', $header) . '; secure; SameSite=None';
header($header, false);
}
헤더에 secure 를 추가 해주면 https 로 통신할때만 해당 쿠키값을 저장하게 된다.
나는 로컬에서 개발중이라 ssl 설치는 하지 않고 개발자 모드 화면에서 직접 쿠키를 추가해줬다.
운영에서는 어차피 https 를 사용하기 때문에 임시방편으로 로컬에서는 수동으로 쿠키를 저장했다.
물론 응답값에 PHPSESSID 값을 따로 저장해서 스크립트에서 쿠키를 저장해도 된다.
'개발 > PHP 라라벨' 카테고리의 다른 글
Centos 7 에서 browsershot 사용하기 (0) | 2024.01.19 |
---|---|
OSX(MacBook) 에 php5.3 설치하기 (0) | 2023.05.18 |
웹에서 애플로그인 (Sign In with Apple) 구현을 위한 설정 (0) | 2023.03.17 |
라라벨 큐 & Database 사용하기 (0) | 2023.01.31 |
withTrashed does not exist 에러 (0) | 2021.07.22 |