我的印象是Internet Explorer 10完全支持CORS,但现在我不确定.
我们有一个JS/HTML5应用程序,它使用多个域,并读取图像数据.我们在JS中从另一个域加载图像,imageDraw()将图像加载到画布,然后在画布上使用getImageData.(我们不使用跨域XMLHttpRequests).为此,我们必须在服务于图像的服务器上设置响应标头:
access-control-allow-origin: *
access-control-allow-credentials: true
Run Code Online (Sandbox Code Playgroud)
并在加载之前在JS中的图像对象上设置它:
image.crossOrigin = 'Anonymous'; //Also tried lowercase
这适用于所有新浏览器,除了IE10,当我们尝试读取数据时会抛出安全错误.
SCRIPT5022: SecurityError
Run Code Online (Sandbox Code Playgroud)
有没有什么需要做的IE10来处理这些跨域图像不被污染?
更新:
我注意到前一个问题的答案. 有趣的是,这个JSFiddle也不能用于IE10 - 任何人都可以确认这在IE10中不起作用吗?
在Firefox或任何其他浏览器中是否有等同于Internet Explorer的XDomainRequest?
我想访问域外的服务/网站.
我一直在关注如何设置我的网站以允许跨站点脚本请求的Mozilla文章.使用IIS管理器我添加了以下HTTP响应标头
Access-Control-Allow-Origin : *
Access-Control-Allow-Headers : Origin, SecurityPrivateKeyID
Access-Control-Allow-Methods : GET, POST, PUT, DELETE, OPTIONS
Run Code Online (Sandbox Code Playgroud)
尽管如此,我仍然405 Method Not Allowed在浏览器(Firefox和Chrome)发送带有自定义SecurityPrivateKeyID标头的飞行前请求时.
请求
OPTIONS /Service/Json/User.svc/ HTTP/1.1
Host: serviceprovider.com
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Origin: http://client.com
Access-Control-Request-Method: GET
Access-Control-Request-Headers: securityprivatekeyid
Connection: keep-alive
Run Code Online (Sandbox Code Playgroud)
响应
HTTP/1.1 405 Method Not Allowed
Allow: GET
Content-Length: 1565
Content-Type: text/html; charset=UTF-8
Server: Microsoft-IIS/8.0
access-control-allow-origin: *
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS …Run Code Online (Sandbox Code Playgroud)