Javascript 使用带有可选https的FineUploader?

Javascript 使用带有可选https的FineUploader?,javascript,cors,fine-uploader,Javascript,Cors,Fine Uploader,我已经在一个网站上安装了FineUploader,我还包括了一个复选框,允许用户在需要时使用HTTPS上传文件 不幸的是,如果用户使用http访问站点,然后尝试使用ssl,则会出现错误,我假设是因为CORS问题。我认为这是一个CORS问题,因为如果我使用https访问站点,并尝试使用ssl上传,它就可以正常工作 我找到了关于启用CORS支持的方法,但似乎您需要这样做,以便只发出CORS请求,或者不发出任何请求。在我的情况下,有时会有CORS请求,而不是其他 有人知道这方面有什么好办法吗?我是否应

我已经在一个网站上安装了FineUploader,我还包括了一个复选框,允许用户在需要时使用HTTPS上传文件

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

我找到了关于启用CORS支持的方法,但似乎您需要这样做,以便只发出CORS请求,或者不发出任何请求。在我的情况下,有时会有CORS请求,而不是其他


有人知道这方面有什么好办法吗?我是否应该在单击复选框时使用HTTPS重新加载整个页面?

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


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

只是重申一下我在评论中提到的内容(这样其他人可以很容易地看到这一点)


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

如果您直接上传到Amazon s3,请参阅uploaderpage.html文件中脚本中的“SSL也受支持,在这种情况下,
端点
地址必须以
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
},
  • 如果uploaderpage.html是通过http提供的(或者,如果需要灵活性,可以动态填充端点值),那么这仍然有效
  • 这将帮助您避免在通过https上载时出现混合内容错误,“请求了不安全的XMLHttpRequest端点”,如果页面是https,但您请求了http端点,则会发生这种情况
如果您直接上传到Amazon s3,请参阅uploaderpage.html文件中脚本中的“SSL也受支持,在这种情况下,
端点
地址必须以
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
},
  • 如果uploaderpage.html是通过http提供的(或者,如果需要灵活性,可以动态填充端点值),那么这仍然有效
  • 这将帮助您避免在通过https上载时出现混合内容错误,“请求了不安全的XMLHttpRequest端点”,如果页面是https,但您请求了http端点,则会发生这种情况

如果使用HTTPS重新加载整个页面,问题是否得到解决?另外,在用户决定是否使用HTTPS后,是否有某种方法可以实例化Fine Uploader?只是想获得更多关于你的情况的信息。是的,如果我使用HTTPS点击页面,然后使用HTTPS上传,它就会工作。如果我点击使用HTTPS并尝试使用HTTP上传,则会出现错误。你可以用上面两句话交换HTTP/HTTPS,这仍然是事实。我相信我可以在用户选择时实例化,但我相信仍然会有CORS问题。如果在用户选择后实例化,如果需要CORS,您只需启用CORS功能,一切都应该正常。你是不是又碰到别的问题了?啊,我明白你的意思了。如果你使用HTTPS重新加载整个页面,问题解决了吗?另外,在用户决定是否使用HTTPS后,是否有某种方法可以实例化Fine Uploader?只是想获得更多关于你的情况的信息。是的,如果我使用HTTPS点击页面,然后使用HTTPS上传,它就会工作。如果我点击使用HTTPS并尝试使用HTTP上传,则会出现错误。你可以用上面两句话交换HTTP/HTTPS,这仍然是事实。我相信我可以在用户选择时实例化,但我相信仍然会有CORS问题。如果在用户选择后实例化,如果需要CORS,您只需启用CORS功能,一切都应该正常。你是不是又碰到别的问题了?啊,我明白你的意思了。这可能行得通。所以我尝试设置一个简单的版本,默认情况下执行CORS请求,但仍然出错。我刚刚为
cors
设置了
expected:true
,并在服务器端添加了响应头:
Access Control Allow Origin:
,我认为这是可以的,因为我没有使用
sendCredentials:true
。这有意义吗?如果是这样的话,你知道为什么它仍然会出错吗?你是否也在考虑最初的选项请求?这是处理预飞行CORS请求时所必需的。由Fine Uploader发送的所有CORS XHR请求都必须由用户代理预引导。你可以在这本书里读到更多,我想我不是。我将如何处理服务器端的选项?这就是您所说的:
您的回答必须包含相应的访问控制标题。
如果是,你能更详细地说明我到底需要做什么吗?我强烈建议先阅读我链接的博客文章,以便更好地了解浏览器如何处理CORS请求,以及良好的上传程序CORS支持是如何工作的(对于XHR和非XHR请求)。也就是说,我不确定您使用的是什么服务器端语言。查看中的Java示例,了解我如何处理Java中的选项请求。Ray,我浏览了您指给我的文章以及Ja