How to add Access-Control-Allow-Origin to jetty server

embedded-jetty, java, jetty

Solution

Setup the `org.eclipse.jetty.servlets.CrossOriginFilter` in your web app.

Old question/answer on the topic: https://stackoverflow.com/a/8454168/775715

See Jetty Documentation Hub on CrossOriginFilter Use:

Quick Start

Grab yourself a copy of jetty-servlets.jar.

Put the `jetty-servlets.jar` in your `WEB-INF/lib`

Add the following to your `WEB-INF/web.xml`

<filter>
    <filter-name>cross-origin</filter-name>
    <filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class>
    <init-param>
        <param-name>allowedOrigins</param-name>
        <param-value>*</param-value>
    </init-param>
    <init-param>
        <param-name>allowedMethods</param-name>
        <param-value>GET,POST,HEAD</param-value>
    </init-param>
    <init-param>
        <param-name>allowedHeaders</param-name>
        <param-value>X-Requested-With,Content-Type,Accept,Origin</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>cross-origin</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

Problem

I've got a jetty server to run my web services. Recently I developed a program to consume the web service and ran into Access-Control-Allow-Origin issue. How can I add the Access-Control-Allow-Origin: * to a jetty embedded server. below is the webappcontext code. ``` public WebAppContext buildWebAppContext(){ webAppContext = new WebAppContext(); webAppContext.setDescriptor(webAppContext + "/WEB-INF/web.xml"); webAppContext.setResourceBase("."); webAppContext.setContextPath("/posApplication"); webAppContext.setAttribute("webContext", webAppContext); return webAppContext; } ``` Thank you.

Original source