Immer Methode LÖSCHEN ist nicht erlaubt, Access-Control-Allow-Methods in preflight Antwort
Ich bin mit jersey als meine restful-api-Implementierung. Im front-end, ich bin mit angularjs $http-service, um http-Anfrage. Wenn ich einen delete-Methode bekam ich immer folgende Fehlermeldung.
"Method DELETE is not allowed by Access-Control-Allow-Methods in preflight response."
Las ich einige Artikel und Sie sagen, ich brauche, um zu erlauben, löschen Sie auf "Access-Control-Allow-Methods". Ich habe setup die response filter wie unten, aber es hat noch solche problem. Was sollte ich sonst tun?
@Provider
public class CORSResponseFilter implements ContainerResponseFilter {
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException {
MultivaluedMap<String, Object> headers = responseContext.getHeaders();
headers.add("Access-Control-Allow-Origin", "*");
headers.add("Access-Control-Allow-Methods", "*");
}
}
unten ist mein Winkel-code, um eine Anfrage zu:
$http({
method: 'DELETE',
url: remoteUrl,
headers : {'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8',
'ACCESS_TOKEN' : $cookieStore.get("access_token")
},
data : $httpParamSerializer({
'id':id
})
}).success(function(data,status,headers,config) {
$scope.refreshDepartments();
console.log(data);
alert("success");
}).error(function(data,status,headers,config){
console.log(data);
alert("error");
});
- Haben Sie registriert die Anbieter in Ihrem
web.xml
oder application-Klasse? - Ich bin mit spring-boot und es funktioniert für andere Methode wie GET, POST. Nur nicht auf LÖSCHEN
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nach einigen Tests habe ich die Lösung gefunden. Ich legte die erlauben, die Methode auf die Kopfzeile wie unten, dann funktioniert es. Ich weiß nicht warum "*" funktioniert nicht.
BEARBEITEN
Dies geschieht, weil die Winkel addiert X-Header-Tasten in Ihrer Anfrage-Header.
Können Sie dieses Problem beheben, indem ändern des Content-Type, Ihre Wünsche zu "text/plain" oder "application/x-www-form-urlencoded" oder "multipart/form-data".
BEARBEITEN
Fügen Sie diese zu Ihrem server code -
Hoffe, das hilft.