2016-09-08 74 views
3

こんにちは私はGlassfish 4.1.1をサーバーとjava EE 7として使用してJavaでREST APIを使用しています。また、フロントエンドとしてAngularJSも使用していますネットビーンズ。CORS(Access-Control-Allow-Origin)のGlassfishを有効にするJava REST

私はこの簡単なチュートリアル https://www.youtube.com/watch?v=2B3qL7XtKnE に従い、正常に戻っを作成し、私は、フロントエンドからのGET呼び出しを使用しようとすると、私は一般的なエラーアクセス制御が許起源を取得しました。このビデオでは、少女はネットビーンズに付属するクロスオリジン共有フィルタテンプレートを使用し、この問題を修正しています。

package entities; 
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 awdawdCrossOriginResourceSharingFilter implements ContainerResponseFilter { 

    @Override 
    public void filter(ContainerRequestContext requestContext, ContainerResponseContext response) { 
     response.getHeaders().putSingle("Access-Control-Allow-Origin", "*"); 
     response.getHeaders().putSingle("Access-Control-Allow-Methods", "OPTIONS, GET, POST, PUT, DELETE"); 
     response.getHeaders().putSingle("Access-Control-Allow-Headers", "Content-Type"); 
    } 

} 

しかし、私はまだ同じエラーが発生しています。多くのガイドとチュートリアルを見てもそれを修正することはできません。 注:私は、Java、netbeansなどで総初心者です。情報のどの部分であれ、それは私を助けることができます。

XMLHttpRequest cannot load http://localhost:8080/AngularBackEnd/rs/customer. Origin http://localhost:8383 is not allowed by Access-Control-Allow-Origin. (09:09:12:047 | error, javascript) at app/index.html 

コール角度から:

empService.factory('Emps', function($resource){ 
    return $resource('http://localhost:8080/AngularBackEnd/rs/customer', {}, { 
     findAll:{method:'GET', isArray:true} 
    }) 
}); 

おかげで再び

おかげ

はここでブラウザのログが出力されます。

EDITED

は今、私はhttps://github.com/ebay/cors-filterを使用し、彼のガイドを追いました。

curl -D -"http://localhost:8080/BackEndTest/webresources/service.customer" 

そして、これは私を与えた:

Server: GlassFish Server Open Source Edition 4.1.1 
X-Powered-By: Servlet/3.1 JSP/2.3 (GlassFish Server Open Source Edition 4.1.1 Java/Oracle Corporation/1.8) 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: OPTIONS, GET, POST, PUT, DELETE 
Access-Control-Allow-Headers: Content-Type 
Content-Type: application/xml 
Date: Fri, 09 Sep 2016 17:50:00 GMT 
Content-Length: 6875 

をそれはそれは私に必要なアクセス制御を提供します示しますが、私としては、私はコマンドを実行したテストするためのweb.xmlに

<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"> 
<filter> 
    <filter-name>CORS Filter</filter-name> 
    <filter-class>org.ebaysf.web.cors.CORSFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>CORS Filter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 
<session-config> 
    <session-timeout> 
     30 
    </session-timeout> 
</session-config> 
</web-app> 

を追加しますこれまでと同じエラーが表示されます。

+1

作成したフィルタを使用するようにアプリケーションコンテナを設定しましたか? –

+0

こんにちは、私はそれについて読んだだけですが、どこで設定すればいいのかわかりません。 – VictorS

+0

[JAX-RS Webサービスでクロスドメイン要求を有効にするにはどうすればいいですか?](http://stackoverflow.com/questions/23450494/how-to-enable-cross-domain-requests-on-jax-rs-ウェブサービス) –

答えて

0

クライアントは、Originヘッダーを送信する必要があります。 「起源:http://localhost」--header カール:

は、詳細はHow does Access-Control-Allow-Origin header work?を参照し、あなたのケースでは、カール

経由でヘッダーを設定する方法についてはHow to send a header using a HTTP request through a curl call?を参照してください、あなたはこのような何かを行うことができるはず-D - "http://localhost:8080/BackEndTest/webresources/service.customer"

関連する問題