L'origine n'est pas autorisée par Access-Control-Allow-Origin - comment faire pour activer la SCRO à l'aide d'un web très simple pile et guice
Je ne suis pas sûr si le problème est que les technologies utilisées, ou ma compréhension des technologies.
J'ai une application html5 écrit en javascript et html hébergé sur un serveur apache 2.2.
J'ai une application java écrit en java à l'aide de la jetée, guice, jackson, jersey qui héberge un simple service REST.
À la fois les applications s'exécutent sur la même case, un sur le port 80 (pur html5 application hébergée sur un serveur apache), l'autre sur le port 8080 (pur java application hébergée sur jetty/guice)
Je crois que la réponse est dans les en-têtes de gi de l'envoi de retour.
De la SCRO en-têtes de dire au navigateur que vous permettre à l'extérieur de demandes de frapper votre api. Je n'arrive pas à comprendre comment configurer mon Jetée, Guice serveur de retourner le bon de la SCRO-têtes.
Je suis en utilisant un imbeded serveur Jetty donc je n'ai pas de web.xml fichier pour ajouter les en-têtes.
Il se peut aussi être quelque chose à voir avec la façon dont le HTML5 serveur d'application (dans ce cas, apache 2.2) est de servir de l'application.
Apache httpd.fichier conf a l'entrée:
LoadModule headers_module modules/mod_headers.so
<IFModule mod_headers>
Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE, HEAD
Header add Access-Control-Allow-Headers: X-PINGOTHER
Header add Access-Control-Max-Age: 1728000
</IfModule>
dans mon guice servlet de configuration j'ai le texte suivant:
public class RestModule extends ServletModule{
@Override
protected void configureServlets() {
bind(QuestbookService.class);
//hook Jersey into Guice Servlet
bind(GuiceContainer.class);
//hook Jackson into Jersey as the POJO <-> JSON mapper
bind(JacksonJsonProvider.class).in(Scopes.SINGLETON);
Map<String, String> guiceContainerConfig = new HashMap<String, String>();
guiceContainerConfig.put(ResourceConfig.PROPERTY_RESOURCE_FILTER_FACTORIES,
HttpStatusCodeMetricResourceFilterFactory.class.getCanonicalName());
serve("/*").with(GuiceContainer.class, guiceContainerConfig);
}
}
Je pense que le problème est dans mon guice config car je n'ai pas de place pour définir les en-têtes de réponse.
Je suis en utilisant un serveur jetty embarqué et donc j'ai pensé dev mode permettrait de contourner l'ensemble de vérifier, mais je peux me tromper.
Je vous remercie pour tous les conseils.
Ma question est côté serveur, l'exemple traite avec le côté client. Le côté client de la bibliothèque se charge déjà de ces inconsistancies. C'est un serveur basé question.
Ajouté, depuis im en utilisant un serveur jetty embarqué avec guice. Je suis savez pas comment configurer sans web.xml... je sais que c'est un manque de compréhension des technologies. mais j'ai l'impression que la technologie de la pile à cette question est suffisamment différent de la double possible qu'il mérite son propre attention puisqu'il s'agit d'un très différente de la technologie de la pile.
L'appelant et de l'appelé sont sur la même case, juste sur des ports différents.. Et de l'utilisation de deux différents serveur piles... je sais que c est la réponse. Je suis juste manque quelque chose sur la façon de mettre en œuvre, ou je suis totalement confus quant à ce que je suis en train de faire.
OriginalL'auteur AnthonyJClink | 2013-05-03
Vous devez vous connecter pour publier un commentaire.
Faire pour les exigences spécifiques de mon application. Le serveur doit être seporate complètement seporate de la part du client. Le client doit être en mesure de se connecter au serveur de communication par n'importe quelle méthode il peut.
Depuis la première mise en œuvre de cette application est le temps du REPOS conduit, j'ai besoin d'être en mesure d'accepter de repos à partir de n'importe où.
En outre, je veux totalement xml-moins de config, j'ai donc utiliser Guice avec un noyé serveur Jetty. Depuis je n'ai pas de web.xml fichier, je ne pouvais pas comprendre comment définir les en-têtes pour permettre la SCRO.
Après beaucoup d'essais et d'erreurs, et la lecture de la guice de la documentation, j'ai trouvé comment ajouter de la SCRO en-têtes de la réponse en laissant le serveur.
La Guice ServletModule classe permet d'ajouter des filtres à vos servlet contexte. Cela me permet d'avoir toutes les demandes passent par une servlet.
Depuis que je suis en train de construire un reste d'application qui répond à la SCRO demandes, j'ai besoin d'un filtre qui a ajouté de la scro en-têtes de la réponse de la demande.
Afin de permettre la scro dans mon embedded server à l'aide de guice, j'ai construit un filtre qui ressemble à ceci:
Guice fournit une classe abstraite qui permet de configurer le Guice Servlet.
Le module de configuration ressemble à ceci:
Maintenant guice va ajouter de la scro en-têtes de chaque réponse. En permettant à mon pur HTML 5 de demande de parler d'elle, peu importe où il est servi.
OriginalL'auteur AnthonyJClink
Juste mettre une ligne dans votre fichier de code
Remplacer * par votre http://www.yoursite.com si vous souhaitez autoriser uniquement pour le domaine particulier
OriginalL'auteur kunal saxena