Jetty Cross Origin Filter

前端 未结 5 1837
故里飘歌
故里飘歌 2020-12-04 15:36

I\'ve configured Jetty\'s cross origin filter, but I continue to get the following error. Does anyone know what is wrong and how to fix it? Below the error message is my ove

相关标签:
5条回答
  • 2020-12-04 16:06

    I ran into this when doing crossdomain calls to web apps deployed to GAE. You can add an explicit header to your Servlet(s) responses, like:

    public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException 
    {
        res.addHeader("Access-Control-Allow-Origin", "*");
        ...
    }
    

    and also make sure you have a crossdomain.xml policy file in the root of your WAR, like:

    <cross-domain-policy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:noNamespaceSchemaLocation="http://www.adobe.com/xml/schemas/PolicyFile.xsd">
    <allow-access-from domain="*"/>
    </cross-domain-policy> 
    

    HTH.

    0 讨论(0)
  • 2020-12-04 16:10

    I had the same Problem with ActiveMQ Ajax within Jetty Web Server. My Problem was, that the allowed headers field is not accepting a wildcard in form of "*".

    For getting ActiveMQ Ajax to work, i also have to add the "Options" Method to the allowedMethods.

    Cross-Origin Filter from 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,OPTIONS,DELETE,PUT,HEAD</param-value>
       </init-param>
       <init-param>
           <param-name>allowedHeaders</param-name>
           <param-value>origin, content-type, accept, authorization</param-value>
       </init-param>
     </filter>
     <filter-mapping>
         <filter-name>cross-origin</filter-name>
         <url-pattern>*</url-pattern>
     </filter-mapping>
    
    0 讨论(0)
  • 2020-12-04 16:18

    For me ( jetty-version 8.1.5.v20120716 ) only these lines in 'web.xml' helps:

    <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,DELETE,PUT,HEAD</param-value>
        </init-param>
        <init-param>
            <param-name>allowedHeaders</param-name>
            <param-value>origin, content-type, accept</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>cross-origin</filter-name>
       <url-pattern>/*</url-pattern>
    </filter-mapping>
    

    I've change log level to DEBUG and get information (like 'GET,POST,DELETE,PUT,HEAD' and 'origin, content-type, accept') from jetty console log. E.g.:

    DEBUG CrossOriginFilter:359 - Method DELETE is among allowed methods [GET, POST, DELETE, PUT, HEAD] 19:14:28,413

    DEBUG CrossOriginFilter:389 - Headers [origin, content-type, accept] are not among allowed headers [*]

    Then I checked result with $.ajax({url:'anotherHost', type:'DELETE', ..})

    0 讨论(0)
  • 2020-12-04 16:20

    Just opened a bug report after wasting a lot of my time:

    https://bugs.eclipse.org/bugs/show_bug.cgi?id=384847

    Also be aware of the fact that wildcards in the parameter values are mostly not supported. (ie. allowed headers)

    0 讨论(0)
  • 2020-12-04 16:25

    Aloha,

    I fought this for awhile as well, and found that the final node needs to be:

    <filter-mapping>
        <filter-name>cross-origin</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    

    NOT

    <filter-mapping>
         <filter-name>cross-origin</filter-name>
         <filter-pattern>/*</filter-pattern>
    </filter-mapping>
    

    Here is the link I found to help me: wiki.eclipse.org/Jetty/Feature/Cross_Origin_Filter

    After I updated my web.xml file and restarted the jetty server, I was able to make cross domain request using jQuery ajax calls.

    Rob

    0 讨论(0)
提交回复
热议问题