使用 HTML 样式标签在 url 中进行 & 符号编码

Ampersand encoding in url with a HTML style tag

我有以下 HTML 样式标签

<style>
    #loginBackground {
        background-image: url(https://somedomain.com/services/storage?id=89174&amp;type=picture&amp;secret=ucWEYqzpQk8QCaHHp3lfDy5vRrISWwUgzGLnWaDD&amp;timestamp=1478862301);
        background-size: cover;
        background-position: center center;
    }
</style>

Chrome 查询这个 url: https://somedomain.com/services/storage?id=89174&amp;type=picture&amp;secret=ucWEYqzpQk8QCaHHp3lfDy5vRrISWwUgzGLnWaDD&amp;timestamp=1478862301 没有在 & 中转动 &amp; 所以图像显示不正确。

文档文档类型是 <!DOCTYPE html> 所以 HTML 5.

如果我不对这些 & 符号进行编码,一切正常,但根据此线程 what's the de facto practice on ampersand encoding in html 所有 & 符号都必须进行编码。

我尝试使用 &#38; 而不是 &amp;,在 url 周围使用双引号或单引号,但没有任何效果。

这是浏览器错误还是在这种情况下不应对 & 符号进行编码?

<style>(和 <script>)元素被定义为(在 HTML 4 个术语中)包含 CDATA。 (HTML 5 says the same thing,但不是很清楚)。

这意味着一般的标记规则不适用,实体也不会展开。

如果您想在 <style> 元素中使用 & 符号,则必须使用文字 & 符号。