我不确定问题是涉及的技术,还是我对技术的理解.
我有一个用javascript和html编写的html5应用程序托管在apache 2.2服务器上.
我有一个用java编写的java应用程序,使用jetty,guice,jackson,jersey来托管一个简单的REST服务.
两个应用程序都运行在同一个盒子上,一个在端口80上(纯粹的html5应用程序托管在apache上),另一个在8080上(在jetty/guice上托管的纯Java应用程序)
我相信答案是在我发回的标题中.CORS标头告诉浏览器您允许外部应用程序命中您的api.我似乎无法弄清楚如何配置我的Jetty,Guice服务器以返回正确的CORS标头.
我正在使用一个imbeded Jetty服务器,所以我没有web.xml文件来添加标头.
它也可能与HTML5应用程序服务器(在本例中为apache 2.2)如何为应用程序提供服务有关.
apache httpd.conf文件有以下条目:
LoadModule headers_module modules/mod_headers.so
<IFModule mod_headers>
Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE, HEAD
Header add Access-Control-Allow-Headers: X-PINGOTHER
Header add Access-Control-Max-Age: 1728000
</IfModule>
Run Code Online (Sandbox Code Playgroud)
在我的guice servlet配置中,我有以下内容:
public class RestModule extends ServletModule{
@Override
protected void configureServlets() {
bind(QuestbookService.class);
// hook Jersey into Guice Servlet
bind(GuiceContainer.class);
// hook Jackson into Jersey as the POJO <-> JSON mapper
bind(JacksonJsonProvider.class).in(Scopes.SINGLETON);
Map<String, String> guiceContainerConfig = new HashMap<String, String>();
guiceContainerConfig.put(ResourceConfig.PROPERTY_RESOURCE_FILTER_FACTORIES,
HttpStatusCodeMetricResourceFilterFactory.class.getCanonicalName()); …Run Code Online (Sandbox Code Playgroud)