gau*_*rav 5 glassfish java-ee-6 glassfish-3
我使用的是最新版本的GlassFish.我想在响应中设置Access-Control-Allow-Origin标头,以便可以从任何域调用我在GlassFish上托管的API.但我无法找到设置它的位置.
Han*_*ank 16
在我的例子中,API请求由Jersey专门处理,因此我可以在以下位置设置响应头ContainerResponseFilter
:
package my.app;
import com.sun.jersey.spi.container.ContainerRequest;
import com.sun.jersey.spi.container.ContainerResponse;
import com.sun.jersey.spi.container.ContainerResponseFilter;
public class CrossOriginResourceSharingFilter implements ContainerResponseFilter {
@Override
public ContainerResponse filter(ContainerRequest creq, ContainerResponse cresp) {
cresp.getHttpHeaders().putSingle("Access-Control-Allow-Origin", "*");
cresp.getHttpHeaders().putSingle("Access-Control-Allow-Credentials", "true");
cresp.getHttpHeaders().putSingle("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
cresp.getHttpHeaders().putSingle("Access-Control-Allow-Headers", "Content-Type, Accept");
return cresp;
}
}
Run Code Online (Sandbox Code Playgroud)
过滤器在web.xml中启用:
<servlet>
<servlet-name>Gateway Servlet</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name>
<param-value>my.app.CrossOriginResourceSharingFilter</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
Run Code Online (Sandbox Code Playgroud)
如果你不使用Jersey,我想你可以创建一个类似的servlet响应过滤器.
小智 9
这样做的最好和最简单的方法是右键单击该项目
并选择跨源资源共享过滤器
归档时间: |
|
查看次数: |
19339 次 |
最近记录: |