Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 浏览器如何获取源地图?_Javascript_Source Maps - Fatal编程技术网

Javascript 浏览器如何获取源地图?

Javascript 浏览器如何获取源地图?,javascript,source-maps,Javascript,Source Maps,我试图理解源代码映射是如何工作的。我使用nodejs创建了一个带有一个页面的简单web服务器。已安装jQuery,它附带一个缩小版本和源映射。然后,我在我的网页上放置了一个脚本标记,包括jQuery的缩小版本。多亏了源代码图,我现在可以在chrome开发者工具中浏览未统一的代码了。但是怎么做呢 我分析从服务器发送的内容,源地图不会被传输。它们不会显示在chrome开发者工具的网络选项卡中,也不会包含在缩小的jquery文件的下载内容中。唯一的问题是缩小的jquery文件末尾的/#sourceMa

我试图理解源代码映射是如何工作的。我使用nodejs创建了一个带有一个页面的简单web服务器。已安装jQuery,它附带一个缩小版本和源映射。然后,我在我的网页上放置了一个脚本标记,包括jQuery的缩小版本。多亏了源代码图,我现在可以在chrome开发者工具中浏览未统一的代码了。但是怎么做呢

我分析从服务器发送的内容,源地图不会被传输。它们不会显示在chrome开发者工具的网络选项卡中,也不会包含在缩小的jquery文件的下载内容中。唯一的问题是缩小的jquery文件末尾的
/#sourceMappingURL=jquery.min.map
。浏览器如何访问它们

我想知道的部分原因是,在我的工作中,我正在创建一个应用程序,如果能够在生产中跟踪源映射的错误,那将是一件好事。但现在看来,如果我想允许的话,这也意味着任何访问该网站的人都可以获得未统一的代码。这是正确的还是我可以控制源映射如何从服务器传输到客户端

编辑
谢谢你的回答。我自己也做了一些研究,记录服务器收到的每个请求。如果使用调试器工具,则源映射是在缩小文件末尾指定的url处的请求。chrome隐藏了这一点,这让人非常困惑。如果我阻止传输源映射,源映射将不起作用,但chrome也将缓存源映射。也就是说,如果我允许源映射,查看它,然后阻止它并再次查看源映射可能仍然有效。

在这种情况下,浏览器请求的是
jquery.min.map
文件相对于
元素的
src
URL(“源源代码”)。(源代码映射可能会将所有源代码嵌入
sourcesContent
)我不确定为什么它不会显示在“网络”选项卡中(我以前从未检查过)。在其他情况下,源映射可以完全嵌入脚本中。可以想象,您可以将源文件放在一个不可公开访问但对您来说是可访问的URL后面,并相应地设置源映射的
sourceRoot
属性。在这种情况下,您需要确保源地图不包含
sourcesContent

源地图确实已传输,但在当前版本的Chrome中,它们不会显示在网络选项卡中。根据,源映射过去在“网络”选项卡上是可见的,但在某个时候,他们决定更改它,使请求不再可见


至于保持源地图的私有性,中提到的解决方案之一是创建一个
.htaccess
文件,该文件限制客户端从本地网络访问源地图。另一种方法是设置身份验证,因此您必须登录站点才能查看源地图,否则您将获得403。

我有一个无关的问题。浏览器是否在缓存中存储sourcemap?我的缩小文件有时间戳,但sourcemaps没有附加时间戳。