【问题标题】:How to add Access-Control-Allow-Origin to jetty server如何将 Access-Control-Allow-Origin 添加到码头服务器
【发布时间】:2013-04-08 21:19:14
【问题描述】:

我有一个码头服务器来运行我的网络服务。最近我开发了一个使用 Web 服务的程序并遇到了 Access-Control-Allow-Origin 问题。

如何将 Access-Control-Allow-Origin: * 添加到 jetty 嵌入式服务器。

下面是 webappcontext 代码。

public WebAppContext buildWebAppContext(){
    webAppContext = new WebAppContext();
    webAppContext.setDescriptor(webAppContext + "/WEB-INF/web.xml");
    webAppContext.setResourceBase(".");
    webAppContext.setContextPath("/posApplication");
    webAppContext.setAttribute("webContext", webAppContext);
    return webAppContext;
}

谢谢。

【问题讨论】:

    标签: java jetty embedded-jetty


    【解决方案1】:

    解决此 CORS 问题的方法是在 chrome/chromium 浏览器中使用扩展程序。这是扩展的链接。

    https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?utm_source=chrome-app-launcher-info-dialog

    无需在服务器端代码中添加任何标头(这显然可以工作,但可能不是一个好主意)。

    【讨论】:

    • 另一种解决方法是在没有 CORS 规则的情况下启动 Chrome。完全退出 Chrome。然后打开终端并执行: open -a Google\ Chrome --args --disable-web-security --user-data-dir
    【解决方案2】:

    在您的网络应用中设置org.eclipse.jetty.servlets.CrossOriginFilter

    关于该主题的旧问题/答案:https://stackoverflow.com/a/8454168/775715

    见码头Documentation HubCrossOriginFilter Use

    快速入门

    1. 获取一份jetty-servlets.jar 的副本。

    2. jetty-servlets.jar 放入您的WEB-INF/lib

    3. 将以下内容添加到您的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>
    

    【讨论】:

    • 请注意,标题中不允许使用诸如“*”之类的通配符。我必须明确提供标题列表才能使其正常工作。在您链接的问题中查看killer7的答案。
    • 在 2013 年 4 月回答这个问题时,它是正确的。从那以后情况发生了变化。
    • @JoakimErdfelt 你能把我链接到正确的解决方案吗?这个不适合我
    • 谢谢,我需要将其重命名为 java-servlets.jar 吗?会自动捡起来吗?仅使用该名称而不是 jetty-servlets-9.4.9.v20180320?
    • @Dominic 这是一个很好的新问题候选人,因为它取决于您的设置(使用较新的jetty-home-&lt;ver&gt;.tar.gz?或较旧的jetty-distribution-&lt;ver&gt;.tar.gz?或独立?或jetty-runner?或jetty-maven-插件?还是嵌入式码头?)
    猜你喜欢
    • 2018-06-24
    • 2016-06-10
    • 2011-06-27
    • 1970-01-01
    • 2016-09-05
    • 2012-09-19
    • 2020-10-18
    • 1970-01-01
    相关资源
    最近更新 更多