获取更多动态,关注公众号:黑客下午茶

Hosting Publicly

默认情况下,Sentry 将在已编译的 JavaScript 文件中查找源映射指令(source map directives),这些指令位于最后一行,并具有以下格式:

Copied
//# sourceMappingURL=<url>

当 Sentry 遇到这样一个指令时,它将解析与它所在的源文件相关的 source map URL,并尝试使用 HTTP 请求获取它。

例如,如果您有一个压缩的 JavaScript 文件位于 http://example.org/js/app.min.js,并且在该文件的最后一行中,则找到以下指令:

Copied
//# sourceMappingURL=app.js.map

Sentry 将尝试从 http://example.org/js/app.js.map 获取 app.js.map

另外,在生成源代码映射时,你可以指定源代码映射所在的绝对 URL:

Copied
//# sourceMappingURL=http://example.org/js/app.js.map

虽然从服务器使 source maps 可用于 Sentry 是最自然的集成(natural integration),但并不总是建议这样做:

  • Sentry 可能并不总是能够访问您的服务器。
  • 如果您没有在您的 asset URLs 中指定版本,可能存在版本不匹配
  • 额外的延迟可能意味着源映射对所有错误都不可用。

由于这些原因,最好的做法是预先上传 source maps 给 Sentry(见下文)。

Working Behind a Firewall

推荐的解决方案是将您的 source artifacts 上传到 Sentry,但有时有必要允许来自 Sentry 内部 IP 的通信。有关 Sentry 的公共IP 的更多信息,请参见:IP Ranges

Secure Access to Source Maps

如果你想保密你的 source maps 并且选择不直接上传你的 source maps 到 Sentry,你可以在你的项目设置中启用 “Security Token” 选项。

这将导致 Sentry 服务器对来自 “Allowed Domains” 的 URL 的出站请求附加 HTTP 标头 X-Sentry-Token 标头:

Copied
GET /assets/bundle.min.js
X-Sentry-Token: {token}

token 是您在项目设置中定义的安全值。然后,您可以配置您的 web 服务器,以允许在此 header/token 对 存在时访问您的 source maps。你也可以覆盖默认的 header 名称(X-Sentry-Token)并使用 HTTP Basic Authentication,例如通过传递 Authorization: Basic {encoded_password}

You can edit this page on GitHub.