8
votes

Existe-t-il un moyen de contourner la même politique d'origine de JavaScript / JQuery pour un accès local?

essayer d'utiliser ajax , getjson et fonctionne comme celui-ci pour récupérer une URL externe à partir d'un ordinateur de développement local (non serveur). Existe-t-il un moyen de contourner la même politique d'origine, de sorte que je puisse tester localement, au lieu de devoir télécharger sur un serveur?


0 commentaires

8 Réponses :


2
votes

Il existe différentes façons de contourner cela, en fonction du navigateur que vous utilisez pour le développement. Par exemple:

  • dans firefox (gecko), définissez sécurité.pileuri.strict_origin_policy à false
  • en chrome, démarrez le navigateur avec l'option - Autoriser-fichier-accès-gort-fichiers

    Références: Firefox , Chrome


0 commentaires


0
votes

Comme il s'agit d'une question de développement et non d'un problème d'utilisateur final / fonctionnalité, plutôt que de se concentrer sur l'AJAX à Cross Domaines, obtenez votre environnement de développement configuré comme un proxy pour récupérer les données les plus récentes des serveurs de production. C'est vraiment facile à faire.

Vous auriez besoin de configurer un serveur Web dans votre environnement de développement (s'il n'en a pas déjà un), puis configurez le serveur pour répondre à 404 demandes en récupérant puis faisant écho à des données de production. Vous pouvez configurer votre serveur de manière à ce que seuls les fichiers de données AJAX soient ramassés (sinon, il sera confondre de déboguer d'autres fichiers si les actifs de production commencent à apparaître sur vos pages de développement). Donc, si http://dev.myserver.com/data/json/mydata.json est manquant, votre script 404 obtiendra http://prod.myserver.com/data/json /mydata.json et l'écho au client. La bonne chose à propos de cette configuration est que vous pouvez utiliser des données simulées très facilement: si le fichier est présent dans votre environnement de développement, votre script Ajax obtiendra cela; Mais si vous effacez ou renommez ce fichier, vous aurez à la place des données de production. Cette fonctionnalité a été tellement utile que je ne peux pas le recommander suffisamment.

Si vous travaillez avec XML, je vous recommande de faire dupliquer les en-têtes HTTP dans le 404. Si votre processus 404 répond avec un Type de contenu de texte / html , vous n'obtiendrez aucun ResponsifXML pour analyser.


0 commentaires

4
votes

Nous avions le même besoin lorsque nous développons notre application Web. Voici comment nous l'avons fait:

Le navigateur et le serveur communiquent uniquement via JSON.
Tout le HTML est rendu dans le navigateur en utilisant pur (notre moteur de modèle JS).
Le code de navigateur est développé localement comme ceci:

Nous ajoutons un paramètre hôte dans l'URL de l'application: xxx

En production, le JSON est envoyé au serveur avec un poteau.
Mais ici la fonction chargée de l'appel AJAX réagira au paramètre et à créer un JSON injection (obtenez) à la place. xxx

  • f2309892 est une fonction temporaire, avec un nom aléatoire, qui pointe vers la méthode qui gérera la réponse
  • json est le JSON que nous envoyons au serveur

    Cela signifie que vous aurez besoin d'une coopération à partir du backend pour vous servir que JSON enveloppé dans une fonction de rappel comme: xxx

    sauf une limitation de taille (vous Impossible d'envoyer un grand Json au serveur avec un get) ça marche comme une brise.
    Un autre avantage est que vous pouvez appeler tous les systèmes (développement et test) du même localhost.


4 commentaires

c'est bien! Je remarque que vous n'avez pas cette utilisation locale de pure dans Beebole. COM / PURE / Documentation / What-Is-pur-and-pourquoi ... Aussi - pouvez-vous élargir vos mots un peu pour écrire un tutoriel dans beebole.com/pure/documentation ?


aussi (juste pour être sûr) - http: //localhost/app.html? hôte = test.beebole-apps.com est sur le client (où vous avez le client télécharger une application avec une sorte du serveur Web ou de l'URL gaspiller ...) et il appelle le test.beebole-apps.com serveur?


Pure est une bibliothèque JS qui construit HTML des données JSON. Cela fonctionne sur le navigateur. Si vous téléchargez le fichier ZIP, il existe un répertoire appelé didacticiel avec quelques exemples.


Si vous avez un serveur Web localement pour développer, vous pouvez utiliser localhost / app.html ; Sinon, vous pouvez utiliser quelque chose comme Fichier: ///users/mic/app.html ou C: \ Test \ app.html; Et ensuite dans cette page, vous injectez la balise de script avec test.beebole-apps.com



6
votes

Voici la réponse simple: chrome -disable-security

à partir du code source (chromé_switches.h): xxx

Je voulais utiliser jQuery. JS pour envoyer des appels Ajax à Google Apps Python Server exécuté sur le port 8080. Juste pour tester, je voulais exécuter le navigateur et le serveur sur la même machine.

Je ne comprends pas toutes les nuances de sécurité , mais pour le développement temporaire, cela semble être une solution de contournement raisonnable. Tant que j'utilise uniquement Chrome pour tester ce drapeau, cela ne devrait pas être un problème.

Voici toute la commande de Mac OS X:

/ applications / Google \ Chrome .app / Contenu / MacOS / Google \ Chrome --Disable-Sécurité Web


1 commentaires

N'oubliez pas de tuer toutes les instances du processus de chrome avant de le faire ou cela ne fonctionnera pas.



0
votes

J'ai eu ce problème, aussi, à l'aide de Chrome et du - Autoriser-fichier-accès-ge-fichiers n'ayant pas vraiment aidé. Retour au script Mon serveur devait retourner, j'ai ajouté ces en-têtes à la réponse et cela a fonctionné bien: xxx

et un autre pour permettre une sorte d'échange de clé Xxx


0 commentaires

1
votes

sans toucher le serveur -

Le moyen le plus rapide et le plus simple de contourner la même stratégie de sécurité d'origine dans Firefox est l'installation de l'add-on Force Cors. Cela fonctionne avec n'importe quel service en insérant les en-têtes appropriés dans chaque réponse.

https://addons.mozilla.org/en-us/firefox / addon / ForceCors /


1 commentaires

Il convient de mentionner que, après avoir installé, vous devez cliquer sur Affichage => Barres d'outils => barre Ajouter. Ensuite, le bouton CORS affichera dans le fond droit, cliquez dessus pour l'activer. J'ai décompressé le XPI et voyez qu'il y a une fonction basculante lorsqu'un bouton a été poussé mais que vous ne voyez jamais le bouton.



0
votes

localhost n'est pas autorisé à utiliser dans Cors http: // code. Google.com/p/chromium/issues/detail?id=67743 Utilisez LVH.ME à la place


0 commentaires