2016-04-12 11 views
1

別のTomcatサーバーにデプロイされているwebserviceを呼び出しています。'Access-Control-Allow-Origin'ヘッダーが存在しません....したがって、 'null'はアクセス不可です。

未知のReferenceError:$ httpが定義されていません index.html:1 http://192.168.200.85:8080/Test/webapi/GetCustomerProfile?accountNo=81701をXMLHttpRequestで読み込めません。プリフライト要求への応答がアクセス制御チェックを通過しない:要求されたリソースに「アクセス制御許可」がない。したがって、原点「ヌル」はアクセスが許可されません。次

は、私のWebサービスのコードです:

import com.ef.wrapupcodes.Skills.ServiceData; 

package com.ef.wrapupcodes; 

import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.PathParam; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.GenericEntity; 
import javax.ws.rs.core.MediaType; 
import javax.ws.rs.core.Response; 

import com.ef.wrapupcodes.Skills.ServiceData; 

    @Path("/services/{serviceName}") 
    public class GetSG 
    { 
    @GET 
    @Produces(MediaType.APPLICATION_JSON) 
    public Response GetSkillGroups(@PathParam ("serviceName") String serName) 
    {  
    Skills services = new Skills(serName); 
    ServiceData list = services.getServices(); 
    final GenericEntity<ServiceData> outPut = 
    new GenericEntity<ServiceData>  (list) { }; 

    return Response.ok() 
      .header("Access-Control-Allow-Origin", "*") 
      .header("Access-Control-Allow-Methods", "GET, OPTIONS") 
      .status(200).entity(outPut).build(); 
    } 

    } 

誰も私がこの問題を解決するのを助けることができますか?

答えて

2

このコードを追加します。

return Response.ok() 
    .header("Access-Control-Allow-Origin", "*") 
    .header("Access-Control-Allow-Methods", "POST, GET, PUT, UPDATE, OPTIONS") 
    .header("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With").build(); 

別の解決策を(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, OPTIONS, HEAD"); 
     cresp.getHttpHeaders().putSingle("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With"); 

     return cresp; 
    } 
あなたのweb.xmlの

<servlet> 
<servlet-name>CORS Filter</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>your.package.CORSFilter</param-value> 
</init-param> 
</servlet> 
<servlet-mapping> 
    <servlet-name>CORS Filter</servlet-name> 
    <url-pattern>/service/*</url-pattern> 
</servlet-mapping> 
+0

をあなたの解決策は、私のために働いたが存在していますあなたの与える解決策に欠けているもの。作業コード リターンResponse.ok() \t \t \t .header( "アクセス制御 - 許可 - 起源"、 "*") \t \t \t .header( "、 "アクセス制御-メソッド許可" でありますPOST、GET、PUT、UPDATE、OPTIONS ") \t \t \t .header(" Content-Typeの「、 "アクセス・コントロール・-ヘッダを許可受け入れ、X-要求-と") \t \t \t .status(200 ).entity(outPut).build(); – Touqeer

関連する問題

 関連する問題