asbiin / laravel-sentry-tunnel
提供了一个端点,用于使用 Sentry SDK 的 `tunnel` 参数
Requires
- php: ^8.1
- illuminate/http: ^10.0 || ^11.0
- illuminate/routing: ^10.0 || ^11.0
- illuminate/support: ^10.0 || ^11.0
- thecodingmachine/safe: ^2.5
Requires (Dev)
- guzzlehttp/guzzle: ^7.8
- larastan/larastan: ^2.8
- laravel/pint: ^1.14
- orchestra/testbench: ^8.0 || ^9.0
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-strict-rules: ^1.5
- phpunit/phpunit: ^10.1 || ^11.0
- psalm/plugin-laravel: ^2.0
- thecodingmachine/phpstan-safe-rule: ^1.2
README
本包提供了一个 URL,用于与 Sentry SDK 的 tunnel
选项 一起使用。
安装
composer require asbiin/laravel-sentry-tunnel
配置
你可以选择发布配置文件
php artisan vendor:publish --provider=SentryTunnel\\Provider
允许的主机和项目
项目将使用 SENTRY_LARAVEL_DSN
值来设置有效的 Sentry 主机和项目,用于隧道传输流量。
你可以通过在 .env
文件中设置 SENTRY_TUNNEL_ALLOWED_HOSTS
值来定义允许的主机,并通过设置 SENTRY_TUNNEL_ALLOWED_PROJECTS
值来定义允许的项目。
SENTRY_TUNNEL_ALLOWED_HOSTS=my.host.com SENTRY_TUNNEL_ALLOWED_PROJECTS=1234,456,78
安全
这本质上创建了一个指向 SENTRY_TUNNEL_ALLOWED_HOSTS
的反向代理。由于 Sentry DSN 不会被保密,这允许每个人都可以向这些主机发送看似来自你的服务器的消息。
因此,隧道 URL 的默认中间件列表包括 web
和 auth
(这样只有认证用户才能使用端点)。
你可以通过设置 config/sentry-tunnel.php
文件中的 sentry-tunnel.middleware
值来更改隧道端点的中间件列表。
CsrfToken
由于你目前无法在 Sentry 的 transportOptions
中传递动态的 X-XSRF-TOKEN
标头,你可以实现自己的传输或者将隧道 URL 放入 VerifyCsrfToken
中间件的排除列表中。
- 将 URL 添加到
VerifyCsrfToken
中间件的except
数组中。
->withMiddleware(function (Middleware $middleware) { $middleware->validateCsrfTokens(except: [ '/sentry/tunnel', ]); })
- 或者实现自己的传输
示例:
const myTransport = (options) => { const makeRequest = async (request) => { const requestOptions = { data: request.body, url: options.url, method: 'POST', referrerPolicy: 'origin', headers: options.headers, ...options.fetchOptions, }; return axios(requestOptions).then((response) => ({ statusCode: response.status, headers: response.headers, })); }; return createTransport({ bufferSize: options.bufferSize }, makeRequest); }; Sentry.init({ // ... transport: myTransport, });
URL
如果需要,你可以更改隧道的 URL。默认值为 /sentry/tunnel
SENTRY_TUNNEL_URL="/super/secret/tunnel"
使用方法
参考 Sentry 文档。
引用
本包是从 naugrim/laravel-sentry-tunnel 分支出来的,做了一些微小的修改。
许可
作者: Alexis Saettler
版权 © 2024。
在 MIT 许可证下发布。 查看许可。