如果我使用来自 non-SSL 网站的 API,浏览器是否需要给出混合内容错误?

If I use an API from a non-SSL website, are browsers required to give a mixed content error?

标题说明了一切。如果我使用来自 non-SSL 网站的 API,我是否知道浏览器会出现混合内容错误?也就是说,对于这种情况,相关标准要求浏览器执行的 mixed-content 错误是什么?

是的,您会收到混合内容错误。 任何不安全的上下文 request/response为混合内容:

A request is mixed content if its url is not a priori authenticated, and the context responsible for loading it requires prohibits mixed security contexts.

A response is mixed content if it is an unauthenticated response, and the context responsible for loading it requires prohibits mixed security contexts.

和负责加载它的上下文要求禁止混合安全上下文 只是意味着请求上下文是 secure context——基本上,一个文档带有 https 起源.

另见 Active content examples section of the MDN Mixed content article:

  • <script>src 属性)
  • <link>href 属性)(这包括 CSS 样式表)
  • <iframe>src 属性)
  • XMLHttpRequest 请求
  • CSS 中使用 url 值的所有情况(@font-facecursorbackground-image 等)。
  • <object>data 属性)

请注意,该列表包含 XMLHttpRequest 个请求。 (它应该更新为还包括 fetch() 个请求)。

另请参见 https://developers.google.com/web/fundamentals/security/prevent-mixed-content/what-is-mixed-content#an_xmlhttprequest_example

中的示例