Angular2 IE11缓存问题

时间:2017-06-08 07:42:21

标签: angular caching cors angular-http

每次我在IE上执行简单的CORS get请求时,我都会遇到缓存问题。这不是在Chrome上发生的。所以我不得不在get请求中添加选项:

            let options = new RequestOptions({
                url: this.elementsUrl,
                method: RequestMethod.Get,
                headers: this.getHeaders
            });
            return this.http.get(this.elementsUrl, options)
                .map(response => response.json())
                .catch(error => {
                        console.error('Error', error);
                        return Promise.reject(error.message || error);
                    }
                );

我设置标头以禁用缓存。

    private _getHeaders = new Headers({
    'If-Modified-Since': 'Mon, 26 Jul 1997 05:00:00 GMT',
    'Cache-Control': 'no-cache',
    'Pragma': 'no-cache'
});

现在我得到的信息需要CORS预检和XMLHttpRequest:网络错误0x80070005,访问被拒绝。我可以避免触发预检选项吗?我正确设置选项吗?

它只与IE有关,可以缓存GET请求。 CORS在chrome上工作正常。在服务器端设置:Access-Control-Allow-Origin:*

1 个答案:

答案 0 :(得分:0)

在JAVA的情况下,在服务器端,我创建了一个过滤器,如下所示

duplicity restore [--file-to-restore <relpath>] [--time <time>] <url> <target_folder>

在角色实现http拦截器的客户端上使用以下教程

https://scotch.io/@kashyapmukkamala/using-http-interceptor-with-angular2

在私人@PreMatching @Provider public class GwsApiCorsFilter implements ContainerRequestFilter { @Override public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException { responseContext.getHeaders().add("Access-Control-Allow-Origin", "*"); responseContext.getHeaders().add("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT, PATCH"); responseContext.getHeaders().add("Access-Control-Allow-Headers", getAllowedHeaders()); responseContext.getHeaders().add("Access-Control-Expose-Headers", getAllowedHeaders()); } private String getAllowedHeaders() { StringBuilder sb = new StringBuilder(); sb.append(HttpHeaders.ACCEPT).append(", ") .append(HttpHeaders.CONTENT_TYPE).append(", ") .append(HttpHeaders.AUTHORIZATION).append(", ") .append(HEADER_IF_MODIFIED_SINCE).append(", ") .append(HEADER_CACHE_CONTROL).append(", ") .append(HEADER_PRAGMA).append(", ") .append(HEADER_CONTENT_DISPOSITION).append(", "); return sb.toString(); } } 功能

中添加请求中的所有标头