You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

VS Code Markdown预览无法加载本地Flask站点图片的原因排查

VS Code Markdown预览无法加载本地Flask站点图片的原因排查

我来帮你梳理这个问题的核心原因,你遇到的情况其实很典型——VS Code的Markdown预览环境有安全策略限制,会阻止加载非HTTPS的内网/本地HTTP资源,这就是为什么你直接在浏览器能打开图片,但预览里显示不出来的关键。

具体原因拆解:

  • 内容安全策略(CSP)限制:VS Code的Markdown预览是运行在一个沙盒化的浏览器环境里,默认的安全规则会拦截来自HTTP协议的不安全资源,尤其是像你用的10.200.40.182这类内网IP提供的图片。哪怕你直接点击Markdown里的链接能在系统浏览器打开,但预览器的安全阈值更高,会直接阻止加载这类资源。
  • 外部HTTPS图片能正常显示的对比:你提到的shields.io、GitHub的图片都是通过HTTPS协议提供的,完全符合VS Code预览器的安全策略,所以能正常渲染。

验证与解决方法:

  1. 临时放宽预览安全设置(用于测试)
    打开VS Code的设置(快捷键Ctrl+,),搜索Markdown: Preview Security Settings,把选项改成Allow Insecure Content,然后重新打开Markdown预览。这时候你应该能看到Flask站点的图片正常显示了。

    注意:这个设置是全局的,长期保持可能有安全风险,测试完建议改回默认的Strict

  2. 把Flask站点改成HTTPS(推荐长期方案)
    如果你需要长期在Markdown里预览这些图片,最好给Flask配置HTTPS。可以用自签名证书临时测试,比如:

    from flask import Flask
    app = Flask(__name__)
    
    # 启动时指定证书和密钥
    if __name__ == '__main__':
        app.run(ssl_context=('cert.pem', 'key.pem'))
    

    生成自签名证书可以用OpenSSL命令:

    openssl req -x509 -newkey rsa:4096 -nodes -out cert.pem -keyout key.pem -days 365
    

    之后用HTTPS的链接(比如https://10.200.40.182:5050/...)在Markdown里引用图片,就能在VS Code预览里正常加载了,同时也更安全。

排除其他可能:

你提到直接点击Markdown里的链接能在浏览器打开,说明图片的路径、Flask的路由逻辑(不管是Method1的直接返回文件,还是Method2的渲染模板)都是完全没问题的,所以不用怀疑路径或代码的问题,核心就是VS Code预览的安全限制。

内容来源于stack exchange

火山引擎 最新活动