2016-04-12 29 views
1

Başka bir tomcat sunucusunda dağıtılan web servisini arıyorum. Aşağıdaki hatayı alıyorum:Hayır 'Access-Control-Allow-Origin' üstbilgisinde yok ... Kökenin 'null' erişimine izin verilmiyor

Yakalanmamış ReferenceError: $ http tanımlı değil index.html: 1 XMLHttpRequest, http://192.168.200.85:8080/Test/webapi/GetCustomerProfile?accountNo=81701 yüklenemiyor. Ön kontrol isteğine yanıt, erişim denetimi kontrolünden geçmez: İstenen kaynağa 'Erişim-Kontrol-İzin-Kökeni' başlığı yok. Origin 'null' bu nedenle erişime izin verilmiyor.

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(); 
    } 

    } 

kimse bana bu sorunu çözmek için yardımcı olabilir

: my webservice kodu

şudur?

cevap

2

bu kodu ekleyin:

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(); 

başka bir çözüm

<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

Çözümün benim için çalışıyor sizin web.xml''deki

@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; } 

(ContainerResponseFilter uygulamak sınıf oluşturmak) ama orada Verdiğiniz çözümde eksik bir şey var. Çalışma kodu ", ("*", "Erişim-Control-Allow-Origin") \t \t \t .Header ("Erişim-Control-Allow-Yöntemler" dönüş Response.ok() \t \t \t .Header olduğunu POST, \t \t \t .status (200) "X-Talep-Birlikte kabul UPDATE, SEÇENEKLER'e ") \t \t \t .Header (" Erişim-Control-Allow-Başlıkları"," Content-Type, GET PUT) .entity (çıkış) .build(); – Touqeer