代码之家  ›  专栏  ›  技术社区  ›  ˈvɔlə

如何在.NETCore中以编程方式测试CDN完整性?

  •  0
  • ˈvɔlə  · 技术社区  · 7 年前

    integrity attribute html的 <script> 元素:

        <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" 
                integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" 
                crossorigin="anonymous"></script>
    

    代码

    [Fact(DisplayName = "jQuery integrity")]
    public async Task jQuery()
    {
        var result = await this.Client.GetAsync("https://code.jquery.com/jquery-3.3.1.slim.min.js");
        byte[] content = Encoding.UTF8.GetBytes(await result.Content.ReadAsStringAsync());
        byte[] hash = SHA384.Create().ComputeHash(content);
    
        Assert.Equal(
            expected: "q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo",
            actual: Convert.ToBase64String(hash));
    }
    

    但是Assert.Equals失败了:

    问题

    我到底要做什么?如何检索正确的哈希字符串,以便将其与HTML中使用的哈希字符串进行比较?提前感谢:)

    附言:如果你问自己为什么我要完成这个:只是出于好奇。我主要是想检查CDN是否存在,这样如果CDN不可用,我的构建过程就会自动抛出一个错误。是的,我使用 <脚本>

    1 回复  |  直到 6 年前
        1
  •  0
  •   ˈvɔlə    7 年前

    我能用一种方法解决这个问题 new HttpClient() 而不是 以前创建 HttpClient WebApplicationFactory<TEntryPoint> 到我的测试班打电话 CreateClient

    不过,如果你知道 为什么? 这两个HttpClient实例 表现不同?

    推荐文章
    kambi  ·  使用MD5检查完整性
    11 年前