我有一个Jetty服务器来运行我的Web服务。最近我开发了一个使用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;
}
谢谢。
答案 0 :(得分:12)
在您的网络应用中设置org.eclipse.jetty.servlets.CrossOriginFilter
。
关于该主题的旧问题/答案:https://stackoverflow.com/a/8454168/775715
请参阅Documentation Hub上的Jetty CrossOriginFilter Use:
快速入门
抓取一份jetty-servlets.jar。
将jetty-servlets.jar
放入WEB-INF/lib
将以下内容添加到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>
答案 1 :(得分:1)
此CORS问题的解决方法是在chrome / chromium浏览器中使用扩展。这是扩展名的链接。
无需在服务器端代码中添加任何标头(这显然有效,但可能不是一个好主意)。