相关疑难解决方法(0)

CORS无法在Chrome上运行

我在服务器上设置了跨源资源共享(Jetty使用CrossOriginFilter),它在IE8和Firefox上运行良好.在Chrome上,它只是......没有.

  $.ajax({ url : crossOriginURL,
    type : "GET",
    error : function(req, message) {
        alert(message);
    },
    dataType :  "json" } );
Run Code Online (Sandbox Code Playgroud)

调用错误函数,并显示有用的消息"error".它似乎正在提出请求,但没有任何你期望的标题.如果URL来自同一个来源,它可以正常工作.

javascript jquery google-chrome cors

30
推荐指数
3
解决办法
6万
查看次数

S3 CORS,总是发送Vary:Origin

我正在使用支持CORS的Cloudfront背后的S3存储桶.如果客户端使用Origin标头发出请求,则S3(和cloudfront)使用"Vary:Origin"标头进行响应,但是如果请求是在没有Origin标头的情况下生成的,则响应不包含任何Vary标头.

这是有问题的,因为我在img标签中使用来自cloudfront/s3的资源,在这种情况下,浏览器发出没有Origin标头的请求,然后稍后对所述图像发出ajax请求.然后,浏览器使用图像的缓存版本,而不使用Access-Control-Allow-Origin标头,因此拒绝该请求.

有没有办法让S3始终返回"Vary:Origin"标题?

amazon-s3 cors amazon-cloudfront

16
推荐指数
2
解决办法
4138
查看次数

在S3和CloudFront中使用CORS的HTML2Canvas

我有一个问题,我完全绝望...... :(

我正在使用HTML2Canvas创建包含许多内容的div的屏幕截图.

我已经阅读了许多类似的问题:问题1问题2,我发现另一个问题与我的问题非常相似:

缓存图像的CORS策略

在Firefox中,一切正常,但在Chrome中,我遇到了CORS问题.我有这个错误:

来自" http://files.domain.ly "的图像已被跨源资源共享策略阻止加载:请求的资源上没有"Access-Control-Allow-Origin"标头.因此不允许来源' http:// localhost:58943 '访问.

我在S3 Bucket中以这种方式配置了CORS:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
    <CORSRule>
        <AllowedOrigin>localhost</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
    <CORSRule>
        <AllowedOrigin>localhost:58943</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
    <CORSRule>
        <AllowedOrigin>files.domain.ly</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
</CORSConfiguration>
Run Code Online (Sandbox Code Playgroud)

files.domain.ly是CloudFront的的CNAME.

HTML2Canvas代码:

html2canvas(document.getElementById('zoom_container'), {
  useCORS: true
}).then(function (canvas) {
  canvas.id = "image_canvas_render";
  document.body.appendChild(canvas);
  var img = canvas.toDataURL();
  img.id = "image_render_canvas";
});
Run Code Online (Sandbox Code Playgroud)

为什么它适用于Firefox但不适用于Chrome或Safari?

S3中的文件是公共的,我可以直接通过任何Web浏览器访问,没有任何问题.

我试过在img标签中使用属性crossorigin ="anonymous",但它没有用.

非常感谢!!

编辑:有时它工作,有时没有...缓存问题?

javascript amazon-s3 amazon-web-services html2canvas

7
推荐指数
0
解决办法
2409
查看次数