JAX-RS ermöglicht CORS (Access-Control-Allow-Origin) auf Glassfish 4
Arbeite ich in JAVA EE7, JAX-RS 2.0 Glassfish 4 ist mein SERVER.
Ich Will arbeiten, auf CORS aktivieren der Ajax-Anfragen, die kommen von meiner domain.
Ich weiß, dass ich brauche, um meine server aktivieren. Und ich habe es in PHP. wie Sie den folgenden code:
<?php header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: Authorization");
aber wenn ich versuchte, das gleiche zu tun, ich bekomme immer eine Fehlermeldung, dass
"dies ist ein screenshot".
Also habe ich versucht zu ändern, der Server http-Antwort mit vielen Möglichkeiten...
Und das ist mein code , server-Seite , ich habe ein filer/Anbieter:
@Provider
@CORSBinding
public class Filter implements ContainerRequestFilter{
@Override
public void filter(ContainerRequestContext request) throws IOException {
request.getHeaders().add("Access-Control-Allow-Origin", "*");
request.getHeaders().add("Access-Control-Allow-Headers", "Authorization");
if (request.getMethod().equals("OPTIONS")) {
System.out.println("OPTIONS is requested!!!!!!!!!!!!!");
}
if (request.getMethod().equals("GET")) {
System.out.println("GET is requested!!!!!!!!!!!!!");
}
if (request.getMethod().equals("POST")) {
System.out.println("POST is requested!!!!!!!!!!!!!");
}
if (request.getMethod().equals("DELETE")) {
System.out.println("DELETE is requested!!!!!!!!!!!!!");
}
if (request.getMethod().equals("PUT")) {
System.out.println("PUT is requested!!!!!!!!!!!!!");
}
}
}
Aber es scheint, wie alle blockiert durch eine "firewall" zur Verfügung gestellt von Glassfish4 server.
hier ist meine einfache code javascript:
<script>
var xhr = new XMLHttpRequest();
xhr.open("POST", "http://127.0.0.1:8080/CV/api/v2/posts");
xhr.setRequestHeader('Authorization', 'a');
xhr.send();
</script>
Ich auch noch einen anderen filter mit der @Prematching Kommentar zu update die Anforderung von OPTIONEN ZU POSTEN ... aber ich habe immer zu verlieren meinem Header, ich habe es innerhalb von (ich meine in POST-Anforderung).
@Provider
@PreMatching
public class HttpMethodOverrideEnabler implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext containerRequestContext) throws IOException {
containerRequestContext.setMethod("POST");
containerRequestContext.getHeaders().add("Access-Control-Allow-Origin", "*");
containerRequestContext.getHeaders().add("Access-Control-Allow-Headers","Authorization");
containerRequestContext.getHeaders().add("Access-Control-Allow-Headers","Authorization");
String override = containerRequestContext.getHeaders().getFirst( "X-HTTP-Method-Override");
if (override != null) {
containerRequestContext.setMethod(override);
}
}
Wusste ich, dass Glassfish3 hatte nicht den support für CORS und ("https://java.net/jira/browse/GLASSFISH-16049) Sie sagten, dass Sie es beheben werden mit JEE7.
Dies ist die ganze Geschichte...
also wie kann ich das CORS mit diesem JEE7 mit Glassfish server und JAX-RS2.
Vielen Dank im Voraus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden ContainerResponseFilter nicht ContainerRequestFilter, wie Sie hinzufügen möchten, werden diese Header in der Antwort und nicht auf die Anfrage. Zum Beispiel:
Verwenden Sie den 2 *Filter* die Erste, weil Chrome und andere Browser, ändern Sie die Kopfzeilen für die Sicherheit Zweck, und der zweite ist, fügen Sie die Header für die Antwort. So verwenden ContainerResponseFilter und ContainerRequestFilter. es funktioniert gut mit mir Glück!
public class HttpMethodOverrideEnabler implements
wird die Umsetzung der ContainerResponseFilter und die ContainerRequestFilter?