GET request working on postman but not in browser

走远了吗. 提交于 2020-02-08 10:00:30

问题


I have encountered a strange issue with a GET request that I am stuck on.

I am calling a GET request from my ASP.Net application that works fine in postman but does not hit my userGETReq.onload.

function getUser(username){
userGETReq.open("GET", userURL + "/" + username);
userGETReq.send();

userGETReq.onload = () => {if(userGETReq.status === 200){//cool stuff }}

I am running on a localhost in the browser - the function to start this is being called from a form that returns false.

 <form onsubmit="login(this); return false">

POSTMAN

Picture of successful postman response for the GET request

I have other GET requests from the same application that work. The only difference between this and the other one that works is that it has a 'variable' that gets passed in and has a set route:

    [Route("api/User/{username}")]
    public List<User> Get(string username)

This is how my CORS is set up

that is the problem

CORS:

        EnableCorsAttribute cors = new EnableCorsAttribute("*","*","*");
        config.EnableCors(cors);

Any help would be greatly appreciated!

The waring I am getting:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:56390/api/user/test3. (Reason: CORS request did not succeed).

回答1:


to resolve CORS issue, you can write another method in service as follows

Every time service call is made, OPTIONS is triggered first to check if the service call is allowed and once the OPTIONS returns allowed, actual method is invoked //here you can add URL of calling host or the client URL under HEADER_AC_ALLOW_ORIGIN

@OPTIONS
@Path("/yourservice/")
@LocalPreflight
public Response options() {
    String origin = headers.getRequestHeader("Origin").get(0);
    LOG.info(" In options!!!!!!!!: {}", origin);
    if ("http://localhost:4200".equals(origin)) {
        return Response.ok()
                       .header(CorsHeaderConstants.HEADER_AC_ALLOW_METHODS, "GET,POST,DELETE,PUT,OPTIONS")
                       .header(CorsHeaderConstants.HEADER_AC_ALLOW_CREDENTIALS, "false")
                       .header(CorsHeaderConstants.HEADER_AC_ALLOW_ORIGIN, "http://localhost:4200") 
                       .header(CorsHeaderConstants.HEADER_AC_ALLOW_HEADERS, "content-type")
                       .build();
    } else {
        return Response.ok().build();
    }
}


来源:https://stackoverflow.com/questions/60029698/get-request-working-on-postman-but-not-in-browser

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!