cxf-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Shashank Dutt Jha <shashank...@gmail.com>
Subject Re: MLHttpRequest cannot load
Date Mon, 07 Dec 2015 05:51:04 GMT
If I send request from chrome advance rest client app, it works. So it
looks like some headers have to be set.


If I have following header
 var headers = {
                    'Access-Control-Allow-Origin': '*',
                    //'Origin': '*',
                    'Access-Control-Allow-Methods': 'POST, GET, OPTIONS,
PUT',
                    'Content-Type': 'text/plain',
                    'Accept': 'text/plain'
                    //'Accept': 'application/json, text/javascript'
                };
                //var headers = {
                //    'Accept': 'application/json, text/javascript',
                //    'Content-Type': 'application/json; charset=utf-8'
                //};
                var response = $http({
                    method: "GET",
                    headers: headers,
                    url: 'http://localhost:9001/office/offices/123',
                    'X-Requested-With': 'XMLHttpRequest'

It works for java rest client as well chrome rest app. But not for browser/
web app.

If I comment out anything, it doesn't works out for java rest client.

On Sat, Dec 5, 2015 at 4:35 PM, Shashank Dutt Jha <shashank.dj@gmail.com>
wrote:

> Changed the code to:
> (allowOrigins with * or with http://localhost:56696
>
> @Path("/office/")
> public class OfficeOffice {
>
>
> @GET
> @CrossOriginResourceSharing(allowAllOrigins = true, allowOrigins = "*",
> allowCredentials = true)
> @Path("/offices/{id}/")
> @Produces("text/plain")
> public String getCustomer(@PathParam("id") String id) {
> return "Systems";
> }
>
> }
>
> Tested for Chrome and IE.
>
> In IE it works. In Chrome request is reaching service. and response is
> returned but in browser shows same error message
>
> XMLHttpRequest cannot load http://localhost:9001/office/offices/123.
> Response to preflight request doesn't pass access control check: No
> 'Access-Control-Allow-Origin' header is present on the requested resource.
> Origin 'http://localhost:56696' is therefore not allowed access.
>
> On Fri, Dec 4, 2015 at 4:48 PM, Sergey Beryozkin <sberyozkin@gmail.com>
> wrote:
>
>> Perhaps allowOrigins should be set to a wildcard ?
>>
>>
>> On 04/12/15 11:09, Shashank Dutt Jha wrote:
>>
>>> still same error
>>> Error:
>>> XMLHttpRequest cannot load http://localhost:9001/office/offices/123. No
>>> 'Access-Control-Allow-Origin' header is present on the requested
>>> resource.
>>> Origin 'http://localhost:56696' is therefore not allowed access.
>>>
>>>
>>>
>>> Service code:
>>>
>>> @Path("/office/")
>>> public class OfficeOffice {
>>>
>>>
>>> @GET
>>> @CrossOriginResourceSharing(allowAllOrigins = true, allowOrigins = "
>>> http://localhost:56696" ,allowCredentials = true)
>>> @Path("/offices/{id}/")
>>> @Produces("text/plain")
>>> public String getCustomer(@PathParam("id") String id) {
>>> System.out.println("Serving request to customer id\t"+id);
>>> return "Systems";
>>> }
>>> }
>>>
>>> On Fri, Dec 4, 2015 at 4:21 PM, Shashank Dutt Jha <shashank.dj@gmail.com
>>> >
>>> wrote:
>>>
>>>
>>>> @CrossOriginResourceSharing(
>>>>          allowOrigins = {
>>>>             "http://localhost:56696", "*"
>>>>          },
>>>>          allowCredentials = true,
>>>>          maxAge = 1,
>>>>          allowHeaders = {
>>>>             "X-custom-1", "X-custom-2"
>>>>          },
>>>>          exposeHeaders = {
>>>>             "X-custom-3", "X-custom-4"
>>>>          }
>>>> )
>>>>
>>>> @Path("/office/")
>>>> public class OfficeOffice {
>>>>
>>>>
>>>> @GET
>>>> @Path("/offices/{id}/")
>>>> @Produces("text/plain")
>>>> public String getCustomer(@PathParam("id") String id) {
>>>> System.out.println("Serving request to customer id\t"+id);
>>>> return "Systems";
>>>> }
>>>> }
>>>>
>>>> On Fri, Dec 4, 2015 at 10:00 AM, Shashank Dutt Jha <
>>>> shashank.dj@gmail.com>
>>>> wrote:
>>>>
>>>> I added following code: Still facing issue
>>>>>
>>>>> @CrossOriginResourceSharing(
>>>>>          allowOrigins = {
>>>>>             "http://localhost:56696"
>>>>>          },
>>>>>          allowCredentials = true,
>>>>>          maxAge = 1,
>>>>>          allowHeaders = {
>>>>>             "X-custom-1", "X-custom-2"
>>>>>          },
>>>>>          exposeHeaders = {
>>>>>             "X-custom-3", "X-custom-4"
>>>>>          }
>>>>> )
>>>>>
>>>>> @Path("/office/")
>>>>> public class OfficeOffice {
>>>>> int count = 0;
>>>>> Object obj = new Object();
>>>>> @Context
>>>>> private HttpHeaders headers;
>>>>>
>>>>> @GET
>>>>> @CrossOriginResourceSharing(allowOrigins = { "http://localhost:56696"
>>>>> },
>>>>> allowCredentials = false, exposeHeaders = {
>>>>> "X-custom-3", "X-custom-4" })
>>>>> @Path("/offices/{id}/")
>>>>> @Produces("text/plain")
>>>>> public String getCustomer(@PathParam("id") String id) {
>>>>> synchronized (obj) {
>>>>> ++count;
>>>>> System.out.println("----invoking getCustomer, Customer id is: " +
>>>>> count);
>>>>> }
>>>>> return "Systems";
>>>>> // return Response.status(Status.OK).entity("works").build();
>>>>> }
>>>>>
>>>>> // This method will do a preflight check itself
>>>>>      @OPTIONS
>>>>>      @Path("/")
>>>>>      @LocalPreflight
>>>>>      public Response options() {
>>>>>          String origin = headers.getRequestHeader("Origin").get(0);
>>>>>          if ("http://localhost:56696".equals(origin)) {
>>>>>              return Response.ok()
>>>>>
>>>>>   .header(CorsHeaderConstants.HEADER_AC_ALLOW_METHODS, "DELETE PUT")
>>>>>
>>>>>   .header(CorsHeaderConstants.HEADER_AC_ALLOW_CREDENTIALS, "false")
>>>>>
>>>>>   .header(CorsHeaderConstants.HEADER_AC_ALLOW_ORIGIN, "
>>>>> http://localhost:56696")
>>>>>                             .build();
>>>>>          } else {
>>>>>              return Response.ok().build();
>>>>>          }
>>>>>      }
>>>>>
>>>>>      @GET
>>>>>      @CrossOriginResourceSharing(
>>>>>           allowOrigins = { "http://localhost:56696" },
>>>>>           allowCredentials = true,
>>>>>           exposeHeaders = { "X-custom-3", "X-custom-4" }
>>>>>      )
>>>>>      @Produces("text/plain")
>>>>>      @Path("/annotatedGet/{echo}")
>>>>>      public String annotatedGet(@PathParam("echo") String echo) {
>>>>>          return echo;
>>>>>      }
>>>>>
>>>>> On Thu, Dec 3, 2015 at 4:51 PM, Sergey Beryozkin <sberyozkin@gmail.com
>>>>> >
>>>>> wrote:
>>>>>
>>>>> Please do not copy exception traces into Subject :-)
>>>>>>
>>>>>> Have a look at
>>>>>> http://cxf.apache.org/docs/jax-rs-cors.html
>>>>>>
>>>>>> Register that filter as a provider
>>>>>>
>>>>>> Sergey
>>>>>> On 03/12/15 11:04, Shashank Dutt Jha wrote:
>>>>>>
>>>>>> I want the REST server to be accessible to web/ browser app. Which
is
>>>>>>> correct example to refer to.
>>>>>>>
>>>>>>> On Wed, Dec 2, 2015 at 11:15 AM, Shashank Dutt Jha <
>>>>>>> shashank.dj@gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>> Server side code:
>>>>>>>
>>>>>>>>
>>>>>>>>      protected Server() throws Exception {
>>>>>>>>           JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean();
>>>>>>>>           sf.setResourceClasses(CustomerService.class);
>>>>>>>>           sf.setResourceProvider(CustomerService.class,
>>>>>>>>               new SingletonResourceProvider(new CustomerService()));
>>>>>>>>           sf.setAddress("http://161.85.91.7:9000/");
>>>>>>>>           sf.create();
>>>>>>>>
>>>>>>>>
>>>>>>>> -------
>>>>>>>> When I try to connect to server from chrome browser I get
following
>>>>>>>> error
>>>>>>>>
>>>>>>>> MLHttpRequest cannot load
>>>>>>>> http://161.85.91.7:9001/office/offices/123.
>>>>>>>> Response to preflight request doesn't pass access control
check: No
>>>>>>>> 'Access-Control-Allow-Origin' header is present on the requested
>>>>>>>> resource.
>>>>>>>> Origin 'http://localhost:56696' is therefore not allowed
access.
>>>>>>>>
>>>>>>>>
>>>>>>>> How to resolve this issue?
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>> --
>>>>>> Sergey Beryozkin
>>>>>>
>>>>>> Talend Community Coders
>>>>>> http://coders.talend.com/
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>> --
>> Sergey Beryozkin
>>
>> Talend Community Coders
>> http://coders.talend.com/
>>
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message