【发布时间】:2017-07-11 20:31:46
【问题描述】:
如果来自服务器的响应不是有效的 img(例如 JSON),img html 标记 (<img src="address-to-server-action">) 会发生什么情况。浏览器会抛出解析错误吗?所有浏览器都有相同的行为吗? img是否隐藏有关系吗?
我实际上只是想从只提供 JSON 服务的跨域服务器中引入一个 cookie。
【问题讨论】:
标签: html cors cross-domain
如果来自服务器的响应不是有效的 img(例如 JSON),img html 标记 (<img src="address-to-server-action">) 会发生什么情况。浏览器会抛出解析错误吗?所有浏览器都有相同的行为吗? img是否隐藏有关系吗?
我实际上只是想从只提供 JSON 服务的跨域服务器中引入一个 cookie。
【问题讨论】:
标签: html cors cross-domain
浏览器将显示替代文本。浏览器可能会通知用户图像未正确加载。
您可以隐藏图像(显示:无;)并且它不会显示。
您可以按照http://www.ainixon.me/set-cookie-on-cross-domains/ 中的说明设置跨域cookie。
【讨论】:
如果您尝试类似 <img src="http://example.com/some.json"> 并希望从中返回 JSON 会发生什么,浏览器不会让您这样做。如果src 值不是浏览器支持的有效图像,它就不会显示它,也不会让你对响应做任何其他事情。
这就是浏览器的工作方式和行为is documented in the HTML spec,它引用the request algorithm in the Fetch spec,其中一个属性是请求mode。
除非使用特定模式集执行提取,否则使用默认模式no-cors。而the HTML spec algorithm for image requests 没有设置任何其他模式,所以他们是no-cors。
并且对no-cors 请求的响应由浏览器处理为opaque filtered responses,这意味着从您可能在网络应用程序中尝试的任何客户端JavaScript 代码中,您将无法访问任何信息/属性回应。
【讨论】:
img 元素处触发了一个名为error 的事件。规范没有规定浏览器必须对接收error 事件的img 元素执行什么操作(尽管您的应用程序代码可以设置一个事件侦听器来处理它),但在html.spec.whatwg.org/#the-img-element:attr-img-alt-3 规范有一些“用户代理可能会向用户提供……”当图像损坏时该怎么做的案例。这些都没有说要向用户显示错误