使用FineUploader和可选的https?

时间:2013-04-04 15:55:30

标签: javascript cors fine-uploader

我在网站上设置了FineUploader,并且我添加了一个复选框,允许用户在需要时使用HTTPS上传文件。

不幸的是,如果用户使用http访问该站点,然后尝试使用ssl,则会出错,我认为是因为CORS问题。我认为这是一个CORS问题,因为如果我使用https访问该网站并尝试使用ssl上传它可以正常工作。

我发现some documentation关于启用CORS支持,但看起来你需要这样做,所以只会发出CORS请求或者不会发出任何请求。在我的情况下,有时会有CORS请求而不是其他人。

有没有人知道这方面的好工作?我是否应该在单击复选框时使用HTTPS重新加载整个页面?

2 个答案:

答案 0 :(得分:4)

如果您直接上传到亚马逊s3 ,请参阅official docs中的说明,“也支持SSL,在这种情况下,您的endpoint地址必须以uploaderpage.html文件中的脚本中的https://开头。

request: {
    endpoint: 'https://mybucket.s3.amazonaws.com', 
                // Note that "https://" added before bucket name, to work over https                     
    accessKey: 'AKIAblablabla' // as per the specific IAM account
},
  • 如果通过http提供uploaderpage.html(或者如果您需要灵活性重新设置端点,则可以动态填充端点值),这仍然有效。
  • 这将帮助您避免在通过https上传时出现混合内容错误,“请求不安全的XMLHttpRequest端点”,如果页面为https但您请求了http端点,则会发生这种情况。

答案 1 :(得分:0)

重申我在评论中提到的内容(以便其他人可以轻松看到这一点)......

也许您可以在用户选择HTTP或HTTPS作为上传协议后实例化Fine Uploader。如果必须,您可以通过expected选项的cors属性启用CORS功能。请记住,在处理CORS请求时,您必须解决服务器端的一些细节问题,尤其是涉及IE9或更早版本时。有关详细信息,请参阅my blog post on the CORS feature