如果我在IntelliJ市场上打开插件页面,例如。https://plugins.jetbrains.com/plugin/1236-identifier-highlighter我看到这样的消息:
与正在运行的IDE(IntelliJ IDEA xxxx(版本不兼容
网站如何知道我的系统上运行的是哪个版本的IntelliJ?我没有登录,同样的行为发生在私人模式选项卡/不同的选项卡中。
如果您查看该页面的浏览器开发工具的网络选项卡,您将看到在多个端口(例如63342-63344(上连接到http://localhost:port/api/installPlugin
。我认为这是一个范围,所以如果一个端口正在使用,它可以移动到下一个。
如果运行netstat -n -b
,您将看到idea64.exe
正在侦听成功回复的端口,并且它发送到网页的响应是一个包含版本信息的小JSON数据包。
因此,远程加载的Marketplace网页实际上是在向IDEA的本地副本询问其版本(使用本地HTTP调用(,并使用该信息填充页面的文本!
你甚至可以通过尝试打开http://localhost:63342/api/installPlugin在新的浏览器选项卡中(根据需要更改端口号(。对我来说,IDEA弹出了一个对话框"请求使用REST API/installPlugin API"。您信任未知主机吗?/是/否"(我认为市场网页通常会添加一些标题来抑制这种情况(。如果我单击"是",那么我可以在web浏览器中看到响应JSON版本信息。