Je reçois cette erreur JavaScript
xmlhttprequest ne peut pas charger http://foo.bar.no/api/map_tools/clean_addresses/check. Origine http://foo.bar.noO:9294 n'est pas autorisée par l'accès à la commande d'accès. P> blockQuote>
Tout cela est tout sur le même domaine et le même serveur, mais mon projet JavaScript est hébergé par un script de serveur autonome qui regroupe automatiquement le JavaScript et ses dépendances dans un fichier. P>
Comment puis-je dépasser cette restriction pendant que je me développe? P>
J'ai essayé d'autoriser mon script de serveur JavaScript à se connecter. Ceci est le résultat d'une courbe à l'URL: p>
xxx pré> et je reçois toujours la même erreur que je colle ci-dessus. Pourquoi Chrome refuse-t-il toujours de se connecter à la fichus URL quand il est évidemment autorisé à!? P> P>
3 Réponses :
Utilisez les capacités de proxy inverse de votre serveur Web à proxy http://foo.bar.no/ API / MAP_TOOLS / CLEAN_ADDRESSES / Vérifiez à http://foo.bar .no: 9294 / API / map_tools / Clean_addresses / Vérifiez .
Ainsi, lorsque vous utilisez Apache, vous devez ajouter quelque chose comme P>
<Proxy *> Order allow,deny allow from all </Proxy> ProxyPass /API/map_tools/ http://foo.bar.no:9294/API/map_tools/ ProxyPassReverse /API/map_tools/ http://foo.bar.no:9294/API/map_tools/
Je n'ai rien compris de ça, désolé
Quel site Web utilisez-vous pour le développement?
Le serveur: 80 est Apache, mais le: 9294 est un script de noeud
Cela ressemble à une bonne solution à long terme, mais je cherchais vraiment quelque chose de moins invasif (de préférence une solution que je pouvais s'appliquer juste à mon côté client JavaScript), car il s'agit d'un contournement de sécurité de développement à court terme.
Le problème que j'ai trouvé avec ceci est que Apache affiche "503 service non disponible" pendant une longue période (jusqu'à quelques minutes) chaque fois que le serveur de nœuds sous-jacent est redémarré. Ceci n'est définitivement pas une bonne solution pour le développement où le serveur peut avoir besoin de redémarrer très souvent.
OK je l'ai compris. Je cherchais une solution simple et rapide depuis que je n'ai besoin que des demandes de développement croisées à des fins de développement. Il s'avère que je viens de définir les deux dans mon script php sur Apache. Puis dans mon code javascript: p> et qui a fait le tour p> p>
Vous pouvez contourner les restrictions de sécurité croisées dans le chrome en le démarrant avec le E.g. (ON OS X): P> - désactivation-web-sécurité code> drapeau.
open /Applications/Google\ Chrome.app/ --args --disable-web-security
Il m'a fallu un moment pour que cela fonctionne. Les processus chromés sur Windows ne semblent pas vouloir mourir, même après que je refuse spécifiquement Chrome de courir en arrière-plan. Tant que les processus sont en cours d'exécution, le démarrage de l'exécutable Chrome n'ouvre qu'une nouvelle fenêtre dans les processus existants, ce qui ne fonctionne donc qu'après une fermeture approfondie du chrome en utilisant le gestionnaire de tâches. Cela signifiait également que j'ai perdu tous mes onglets ouverts ... Le menu "récemment fermé" est même parti.
Les règles de détermination d'un
d'une violation de la commande d'accès à la commande code> sont assez strictes: toute différence avant la première barre oblique, y compris le port, le protocole (http vs. https) et le sous-domaine, Thoué une demande d'Ajax traditionnelle à base de XHR ( Bon article en Encosia)
Oui j'ai senti ça. Y a-t-il quelque chose que je peux mettre mon navigateur en "mode de développement" ou quelque chose où il fera fermer le% ¤ # @ Up pendant que je me développe? Tout navigateur Windows ferait
Vous utiliseriez JSONP ou un proxy pour demander d'autres URL de domaine. L'article propose une alternative utilisant la norme CORS pour le contourner.