【发布时间】:2016-03-04 02:58:10
【问题描述】:
Image from origin 'http://192.168.1.67:5555' has been blocked from loading by Cross-Origin Resource Sharing policy: Invalid response. Origin 'http://127.0.0.1:8000' is therefore not allowed access.
我需要允许此 MJPEG 流的跨源,因为用户必须能够使用按钮捕获图像并且没有 CORS,画布会被污染。
我在 FF 和 Chrome 中遇到了这个问题(IE 使用不同的视频源,因为它不支持 MJPEG)。
我的服务器在提供页面时也会返回Access-Control-Allow-Origin: *。在设置img.crossOrigin = "Anonymous"; 之后,图像src 正在Javascript 中设置(如果可能相关)。
如果我删除 crossOrigin="Anonymous",流会加载,但我会收到受污染的画布错误。
谢谢 编辑:来自wireshark,MJPEG请求:
GET /2d HTTP/1.1
Host: 192.168.1.67:5555
Connection: keep-alive
Accept: image/webp,image/*,*/*;q=0.8
Origin: http://127.0.0.1:8000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36
Referer: http://127.0.0.1:8000/
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8,it;q=0.6,pt;q=0.4
HTTP/1.0 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET
Access-Control-Allow-Headers: Content-Type
Content-Type: multipart/x-mixed-replace; boundary=--myboundary
【问题讨论】:
-
您是否也为
option请求提供服务? -
如果 CORS 浏览器发出 2 个请求:第一次飞行前
OPTIONS并且只有当所有标头设置正确时,才会出现正确的请求。详细说明请看here。 -
就我所见,没有
OPTIONS请求。浏览器发出GET请求。我用从 WIreshark 捕获的标题更新了问题。 -
我也为此苦苦挣扎。这是用于生产用途吗?如果没有,那么您可以disable web security 并尝试使用 crossOrigin 属性(我不记得我是完全删除了该属性还是保留了它)。最后,如果不对图像流源进行硬编码,我就无法克服这个错误,即
<img src="http://...">。 -
我有同样的问题,在我的情况下,我在
Access-Control-Allow-Method中有OPTIONS。你解决了吗?
标签: javascript google-chrome cross-domain mjpeg