IE11 CORS lehnt OPTIONEN auf https @
IE11 lehnt aus irgendeinem Grund eine PUT-Anforderung ab, aber nur, wenn ich https verwende. Es fällt mir sehr schwer, das Problem zu finden, da die Verwendung von http, localhost und anderen Browsern problemlos funktioniert.
Die Konsole zeigt zwei Fehler an
SEC7124: Request method PUT was not present in the Access-Control-Allow-Methods list.
SCRIPT7002: XMLHttpRequest: Network Error 0x80070005, Access is denied.
om Browser gesendete @ OPTION-Anforderung ist
Accept: */*
Accept-Encoding: gzip, deflate
Access-Control-Request-Headers: accept, content-type, session-id
Access-Control-Request-Method: PUT
Cache-Control: no-cache
Connection: Keep-Alive
Content-Length: 0
Host: api.domain.com
Origin: https://portal.domain.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
und die Antwort vom Server lautet wie folgt:
X-Powered-By: Servlet/2.5
Server: server
Content-Encoding: gzip
Access-Control-Expose-Headers: Session-Id
Access-Control-Allow-Origin: *
Access-Control-Max-Age: -1
Allow: OPTIONS,GET,HEAD,PUT
Access-Control-Allow-Methods: OPTIONS, GET, POST, PUT, DELETE
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: accept, origin, Content-Type, session-id, authorization, portal-url
Content-Type: application/vnd.sun.wadl+xml
Content-Length: 352
Date: Tue, 19 Jan 2016 15:33:38 GMT
uf dem clientseitigen Standard wird @AngularJS verwendet. $ Http PUT wird verwendet. Auf der Serverseite wird Java mit Jersey verwendet. Der Anforderungsfilter für CORS lautet wie folgt:
public ContainerResponse filter( final ContainerRequest request, final ContainerResponse response )
{
if ( request.getHeaderValue( "Origin" ) != null )
{
final MultivaluedMap<String, Object> headers = response.getHttpHeaders();
headers.add( "Access-Control-Allow-Origin", "*" );
headers.add( "Access-Control-Expose-Headers", "Session-Id" );
headers.add( "Access-Control-Allow-Credentials", Boolean.TRUE.toString() );
}
if ( "OPTIONS".equals( request.getMethod() ) )
{
final MultivaluedMap<String, Object> headers = response.getHttpHeaders();
for ( String method : ["OPTIONS", "GET", "POST", "PUT", "DELETE"] )
{
headers.add( "Access-Control-Allow-Methods", method );
}
headers.add( "Access-Control-Allow-Headers",
"accept, origin, Content-Type, session-id, authorization, portal-url, "
+ "If-Modified-Since, Cache-Control, Pragma" );
headers.add( "Access-Control-Max-Age", "-1" );
}
return response;
}
Vielleicht können Sie sehen, was daran falsch sein kann.
Vielen Dan