получение ошибки, так как MIME-тип ('') не выполняется в веб-приложении сервлета, развернутом в apache karaf - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь загрузить файлы js на странице jsp веб-приложения сервлета в apache karaf.

структура проекта показана в ссылке на изображение структура проекта

*Файлы 1006 * js включают в себя файлы angular.min.js, angular.route.min.js, но файл welcome.js, являющийся файлом углового контроллера, не загружается.пример кода:
<script type="text/javascript" src="/resources/js/angular-cookies.min.js"></script>
<script type="text/javascript" src="/resources/js/spin.min.js"></script>

Но нижеприведенный файл js не загружается

<script type="text/javascript" src="${pageContext.request.contextPath}/resources/js/welcome.js"></script>

изображение ошибки

получение ошибки какпоказано на изображении выше ссылка.

как решить проблему?

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Эта проблема решается путем обработки сопоставления ресурсов в сервлете.Я добавил следующий фрагмент кода в свой сервлет Dashboard.

if (request.getServletPath().startsWith("/resources/")){    
        RequestDispatcher rd = getServletContext().getNamedDispatcher("default");
        rd.include(request, response);
  }

При добавлении вышеуказанного кода моя проблема будет решена.

0 голосов
/ 20 сентября 2018

Решение 1

Создайте фильтр, как показано ниже

 public class CorsFilter implements Filter{

        @Override
        public void doFilter(ServletRequest request, ServletResponse response,
        FilterChain filterChain) throws IOException, ServletException {

            if(response instanceof HttpServletResponse){
            HttpServletResponse alteredResponse = ((HttpServletResponse)response);
            addCorsHeader(alteredResponse);
        }

        filterChain.doFilter(request, response);
        }

        private void addCorsHeader(HttpServletResponse response){
            //TODO: externalize the Allow-Origin
            response.addHeader("Access-Control-Allow-Origin", "*");
            response.addHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE, HEAD");
            response.addHeader("Access-Control-Allow-Headers", "X-PINGOTHER, Origin, X-Requested-With, Content-Type, Accept");
            response.addHeader("Access-Control-Max-Age", "1728000");
        }

        @Override
        public void destroy() {}

        @Override
        public void init(FilterConfig filterConfig)throws ServletException{}
    }

и включите этот фильтр в web.xml

<filter>
        <filter-name>CorsFilter</filter-name>
        <filter-class>com.yourpackage.CorsFilter </filter-class>
    </filter>
    <filter-mapping>
        <filter-name>CorsFilter</filter-name>
        <url-pattern>/*</url-pattern>
</filter-mapping>

Решение 2

Сконфигурируйте CORS непосредственно в web.xml

<filter>
        <filter-name>CORS</filter-name>
        <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
        <init-param>
            <param-name>cors.allowGenericHttpRequests</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>cors.allowOrigin</param-name>
            <param-value>*</param-value>
        </init-param>
        <init-param>
            <param-name>cors.allowSubdomains</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>cors.supportedMethods</param-name>
            <param-value>GET, HEAD, POST, DELETE, PUT, OPTIONS</param-value>
        </init-param>
        <init-param>
            <param-name>cors.supportedHeaders</param-name>
            <param-value>Content-Type, X-Requested-With</param-value>
        </init-param>
        <init-param>
            <param-name>cors.exposedHeaders</param-name>
            <param-value>X-Test-1, X-Test-2</param-value>
        </init-param>
        <init-param>
            <param-name>cors.supportsCredentials</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>cors.maxAge</param-name>
            <param-value>-1</param-value>
        </init-param>
    </filter>


    <filter-mapping>
        <filter-name>CORS</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

Ссылка: http://software.dzhuvinov.com/cors-filter-configuration.html

Надеюсь, это поможет вам.

...