개발
Laravel 6.x
라라벨 Permissions-Policy 헤더 추가 하는 방법
194 views as of November 8, 2024.
크롬 브라우저 콘솔창 에러
크롬 브라우저 일부 사이트에서 아래와 같은 브라우저 에러가 콘솔에 뜨는 것을 볼 수 있다.
Attestation check for Topics on https://coupa.ng/ failed.
Attestation check for Topics on https://partners.coupangcdn.com/ failed.
Copy
위 경우에는 사이트에 붙인 쿠팡 파트너스의 문제이지만 구글링을 해보니까 단순히 쿠팡만의 문제가 아니라 크롬 브라우저의 정책으로 판단된다.
Permission-Policy 관련 자료
Chrome Browser Error: Attestation check for Topics on https://pagead2.googlesyndication.com/ failed
In the latest Chrome version (Version 118.0.5993.71 (Official Build) (64-bit)), for a software product I'm selling, I'm getting: Attestation check for Topics on https://pagead2.googlesyndication.com/
https://stackoverflow.com/questions/77303375/chrome-browser-error-attestation-check-for-topics-on-https-pagead2-googlesynd
Permissions-Policy - HTTP | MDN
The HTTP Permissions-Policy header provides a mechanism to allow and deny the use of browser features in a document or within any <iframe> elements in the document.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Permissions-Policy
Permissions-Policy 는 브라우저에 대한 다양한 기능 권한을 설정할 수 있다.
세부 설정으로는, camera, geolocation, microphone, fullscreen, autoplay, browsing-topics 등 여러가지를 컨트롤 할 수 있다.
각각의 설정을 헤더에 담아 보내는것으로 페이지를 랜더링하는 브라우저나 기기에서 관련 기능을 참조하는 지표가 될 수 있으며 아래와 같이 사용된다고 한다.
Permissions-Policy: camera=(), microphone=(), geolocation=("self"), fullscreen=("https://example.com")
Copy
Browsing-topic 옵션
여기서 논해봐야할거는 위의 콘솔에러에도 보였던 browsing-topics 이다.
이 설정은 브라우저가 사용자의 관심사를 추론하는 토픽 API의 사용을 제어하는것이다.
위 에러의 경우에는 해당 쿠팡 링크가 사용자의 관심사 카테고리를 기반한 맞춤형 광고로 이용할때 관련된 기능 권한을 얻지 못했다는 에러 메세지이다.
뭐 해당 쿠팡 링크는 단순히 검색위젯 기능만하므로 개인화 관련된 TopicAPI는 꺼놔도 될거같다.
적용하는 방법은 직접 애플리케이션 요청헤더에 넣는방법이 있고 웹서버 설정에서 헤더를 작성하는법도 있다.
여기서는 라라벨 프로젝트에서 어떻게 Permissions-Policy 를 헤더에 넣는지 기술하고자 한다.
라라벨 미들웨어를 이용한 헤더 추가
우선 이 과정을 처리하기위하 라라벨 모든 요청시에 호출되는 미들웨어를 이용하고자 한다.
미들웨어 하나를 아래 명령어를 통해 생성해준다. (물론 직접
\App\Http\Middleware
경로에 생성해줘도 무방하다) php artisan make:middleware PermissionPolicy
Copy
그리고 해당 미들웨어 파일을 아래와 같이 작성해준다.
<?php
namespace App\Http\Middleware;
use Closure;
class PermissionPolicy
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$response = $next($request);
// Add Permissions-Policy header
$response->headers->set('Permissions-Policy', 'browsing-topics=()');
// 현재 사이트에 대해서 TopicAPI를 키려한다면 아래 코드로 적용
//$response->headers->set('Permissions-Policy', 'browsing-topics=("self")');
return $response;
}
}
Copy
그리고 이 미들웨어가 작동될 수 있게
App\Http\Kernel.php
파일을 열어 protected $middlewareGroups
의 'web' 배열 최하단에 아래와 같이 추가해준다.protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\PermissionPolicy::class, // 방금 만든 PermissionPolicy 미들웨어 추가
],
'api' => [
'throttle:60,1',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
];
Copy
그리고 페이지를 새로고침하면 해당 에러가 사라진것을 확인할 수 있다.
#개발 #라라벨 #Laravel #Permissions-Policy #Middleware #미들웨어 #헤더
0
개의 댓글
Collection. Laravel 6.x
01.
라라벨에서 ajax로 FormData 넘길때 method에 의해 발생할 수 있는 오류
2021
02.
PHPStorm 라라벨 로컬 서버 환경 설정 값
2021
03.
라라벨에서 쿠키를 이용한 손쉬운 조회수 기능 추가
2024
04.
라라벨에서 세션을 이용한 손쉬운 조회수 기능 추가
2024
05.
라라벨 에러 페이지 수정 및 커스터마이징
2024
06.
라라벨에서 AWS SDK를 설치했을때 나오는 PHP 버전 에러 우회 방법
2024
07.
라라벨에서 IndexNow 사용법
2024
08.
동적 목차(ToC) 구현
2024
09.
라라벨 Permissions-Policy 헤더 추가 하는 방법
2024
10.
라라벨 구버전에서 pagination link http 문제 해결 (proxy 환경)
2024
11.
라라벨 블레이드 템플릿(Blade Template) Json 파싱
2024
12.
라라벨 스로틀 미들웨어로 접근 제한 걸기
2024
13.
라라벨에서 한 화면에 2개의 페이징 붙이는 법
2024
14.
라라벨 릴레이션 디폴트 모델 지정
2024
15.
라라벨 npm run prod 실패 문제 해결
2024