私はGlassFishの最新バージョンを使用しています。応答でAccess-Control-Allow-Originヘッダーを設定して、GlassFishでホストされているAPIをどのドメインからでも呼び出せるようにします。しかし、私はそれを設定する場所を見つけることができません。私の場合はGlassFish:Access-Control-Allow-Originヘッダーの設定方法
答えて
は、APIリクエストが排他的ジャージーによって処理され、したがって、私は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;
}
}
フィルタは、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>
Jerseyを使用しない場合は、同様のサーブレット応答フィルタを作成することができます。
これは、Java EEの標準的な方法です。使用されるライブラリパッケージ(javax)とヘッダーを取得するメソッド呼び出し(getHeaders)が異なる点を除き、Jerseyの例とほぼ同じです。
import java.io.IOException;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerResponseContext;
import javax.ws.rs.container.ContainerResponseFilter;
import javax.ws.rs.ext.Provider;
@Provider
public class RestResponseFilter implements ContainerResponseFilter{
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException{
responseContext.getHeaders().putSingle("Access-Control-Allow-Origin", "*");
responseContext.getHeaders().putSingle("Access-Control-Allow-Credentials", "true");
responseContext.getHeaders().putSingle("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
responseContext.getHeaders().putSingle("Access-Control-Allow-Headers", "Content-Type, Accept");
}
}
glassfish 4.1のweb.xmlはどうですか? – Muka
タグjava-ee-6を使用しているため、@Providerはサポートされていません。 、これを行うための最善かつ最も簡単な方法
import java.io.IOException;
import java.util.logging.Logger;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletResponse;
@WebFilter(filterName = "AddHeaderFilter", urlPatterns = {"/*"})
public class ResponseFilter implements Filter {
private final static Logger log = Logger.getLogger(ResponseFilter.class.getName());
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
if (response instanceof HttpServletResponse) {
log.info("Adding headers");
HttpServletResponse http = (HttpServletResponse) response;
http.addHeader("Access-Control-Allow-Origin", "*");
http.addHeader("Access-Control-Allow-Credentials", "true");
http.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
}
chain.doFilter(request, response);
}
エントリーがコンテキストメニューにない場合は、「Other ...」を選択して、「cross」とタイプしてオプションのリストをフィルターします。これからは、Leonardoの説明に従ってコンテキストメニューからアクセスできます。 –
これ!なぜこれがより頻繁に言及されていないのか分かりません。作品は魅力的で、1秒しかかかりません – Rombus
- 1. WeblogicレスポンスのHTTPヘッダーの設定方法
- 2. Guzzleのrefererヘッダーの設定方法
- 3. Railsヘッダー:フォームの設定方法は?
- 4. ヘッダーをQListViewに設定する方法
- 5. HttpAsyncPost設定ヘッダー
- 6. androidの線形レイアウトのヘッダーとフッターを設定する方法
- 7. ヘッダー/ altの設定方法。 MvcContrib Gridの行/行スタイル?
- 8. jpegイメージ用のデフォルトの応答ヘッダーを設定する方法
- 9. h1ヘッダーのスタイルをjQuery UIで設定する方法
- 10. angular2の$ http.getメソッドでヘッダーを設定する方法
- 11. angle2のapplication/jsonにヘッダーを設定する方法
- 12. DataGridの列ヘッダーでDataContextを設定する方法
- 13. Vaadinテーブルの列ヘッダーにダブルテキスト行を設定する方法
- 14. 外部フレームワークのヘッダー検索パスを設定する方法..?
- 15. 角5のHttpHeadersにヘッダーを設定する方法
- 16. シャイニーダッシュボードのタイトル/ヘッダーを設定
- 17. テーブルビュー内の特定のコンテンツの上にヘッダーを設定する方法
- 18. ヘッダーを設定する方法がわかりません
- 19. Ajaxコールでヘッダーを設定する方法は?
- 20. dotCMSでhttpヘッダーを設定する方法
- 21. GlassfishサーバーでHTTPヘッダーを設定する方法
- 22. Mustacheを使用してHTMLヘッダーを設定する方法
- 23. アンドロイドでヘッダーとフッターを設定する方法は?
- 24. apache camelで承認ヘッダーを設定する方法:ahc
- 25. SoapUIProTestCaseRunnerで認証ヘッダーを設定する方法は?
- 26. camel route springでJMSCorrelationIdとJMSReplyToヘッダーを設定する方法
- 27. Soap Request Javaでヘッダーを設定する方法
- 28. odata4jにキャッシュ制御ヘッダーを設定する方法は?
- 29. jqueryでajax呼び出しでヘッダーを設定する方法
- 30. Atmospehreソケットにhttp応答ヘッダーを設定する方法
をフィルタリングジャージーなしでこれを行う方法について? – Berty
http://padcom13.blogspot.de/2011/09/cors-filter-for-java-applications.html – Hank
jax-rs 2.0 APIのContainerRequestFilterが行うため、CXFではポストに記載されているメソッドは機能しませんフィルタから拡張/実装しないため、サーブレットフィルタとして設定することはできません。そうしようとすると、クラスキャスト例外が発生します。 –