2013-04-04 1 views
1

J'ai installé FineUploader sur un site et j'ai inclus une case à cocher qui permet aux utilisateurs de télécharger des fichiers en utilisant HTTPS si le vouloir.Utilisation de FineUploader avec https facultatif?

Malheureusement, si l'utilisateur accède au site en utilisant http, puis essaie d'utiliser ssl, il y a des erreurs, je suppose en raison de problèmes CORS. Je suppose que c'est un problème de CORS parce que si j'accède au site en utilisant https et essaie de télécharger en utilisant ssl cela fonctionne très bien.

J'ai trouvé some documentation à propos de l'activation de la prise en charge de CORS, mais il semble que vous ayez besoin de le faire pour que seules les demandes CORS soient effectuées ou qu'aucune demande ne soit faite. Dans ma situation, il y aura des demandes de la SCRO parfois et pas d'autres.

Quelqu'un connaît-il un bon travail pour cela? Dois-je simplement recharger la page entière en utilisant HTTPS lorsque la case est cochée?

+0

Votre problème est-il résolu si vous rechargez la page entière en utilisant HTTPS? De même, est-il possible d'instancier Fine Uploader après que l'utilisateur ait décidé s'il veut ou non utiliser HTTPS? J'essaie juste d'avoir un peu plus d'informations sur votre situation. –

+0

Oui, si je clique sur la page en utilisant HTTPS et que je télécharge en utilisant HTTPS cela fonctionne. Si je tape en utilisant HTTPS et essaie de télécharger en utilisant HTTP it erreurs. Vous pourriez prendre les deux phrases ci-dessus et échanger HTTP/HTTPS et ce serait toujours vrai. Je suis sûr que je pourrais instancier quand l'utilisateur sélectionne mais je crois qu'il y aurait toujours un problème de CORS. –

+1

Si vous instanciez après la sélection de l'utilisateur, si CORS est requis, vous devez simplement activer la fonction CORS et tout devrait fonctionner. Est-ce que vous rencontrez un autre problème? –

Répondre

0

Juste pour répéter ce que je l'ai mentionné dans mes commentaires (pour que les autres peuvent facilement voir cela) ...

Peut-être que vous pouvez instancier fine Uploader après que l'utilisateur sélectionne HTTP ou HTTPS comme protocole pour les téléchargements. Si vous le devez, vous pouvez activer la fonction CORS via la propriété expected de l'option cors. Gardez à l'esprit qu'il y a quelques détails côté serveur auxquels vous devez répondre lors du traitement des requêtes CORS, en particulier si IE9 ou plus est impliqué. S'il vous plaît voir my blog post on the CORS feature pour plus de détails.

+0

J'ai donc essayé de configurer une version simple qui faisait une requête CORS par défaut, mais elle est toujours en erreur. Je viens de mettre 'expected: true' pour' cors' et du côté serveur j'ai ajouté l'en-tête de réponse: 'Access-Control-Allow-Origin: *' que je pensais être ok puisque je n'utilisais pas 'sendCredentials: true '. Cela a-t-il du sens? Si oui, aucune idée de pourquoi cela serait encore une erreur? –

+0

Comptez-vous également la demande OPTIONS initiale? Ceci est requis lors de la gestion des demandes CORS en amont. Toutes les demandes CORS XHR envoyées par Fine Uploader doivent être contrôlées en amont par l'agent utilisateur. Vous pouvez en lire plus à ce sujet dans [mon article sur le support CORS dans Fine Uploader] (http: //blog.fineuploader.com/2013/01/cors-support-in-33.html). –

+0

Je ne pense pas que je suis. Comment pourrais-je gérer les OPTIONS du côté serveur? Est-ce ce à quoi vous faisiez référence lorsque vous dites: «Vos réponses doivent inclure les en-têtes Access-Control appropriés». Si oui, pourriez-vous entrer dans les détails sur ce que je dois faire exactement? –

4

Si vous téléchargez directement sur Amazon s3, voir la note dans le official docs, « SSL est également pris en charge, auquel cas votre adresse endpoint doit commencer par https:// » dans le script de votre uploaderpage.html fichier.

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 
}, 
  • Cela fonctionne toujours si uploaderpage.html est servi sur http (ou vous pourriez remplir la valeur de point de terminaison dynamique si vous avez besoin de flexibilité re point final). Cela vous aidera à éviter l'erreur de contenu mixte lors du téléchargement sur https, "a demandé un point d'extrémité XMLHttpRequest non sécurisé", ce qui se produit si la page est https mais que vous demandez un point de terminaison http.
+0

Cette solution fonctionne, cela signifie que je peux travailler sur localhost et sur la production avec https .... merci :) – Shina

Questions connexes