Получить запрос работает на почтальоне, но не в браузере - PullRequest
0 голосов
/ 02 февраля 2020

Я столкнулся со странной проблемой с GET-запросом, на котором я застрял.

Я звоню GET-запросом из моего ASP. Net приложения, которое отлично работает в почтальоне, но не срабатывает my userGETReq.onload.

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

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

Я работаю на локальном хосте в браузере - функция для запуска вызывается из формы, которая возвращает false.

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

POSTMAN

Изображение успешного ответа почтальона на запрос GET

У меня есть другие запросы GET из того же приложения, которые работают. Разница между и между этим и другим работающим состоит в том, что у него есть «переменная», которая передается и имеет заданный маршрут:

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

Вот как мой CORS настроить

в этом проблема

CORS:

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

Любая помощь будет принята с благодарностью!

Я получаю разрешение:

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 Ответ

0 голосов
/ 03 февраля 2020

для решения проблемы CORS вы можете написать другой метод в сервисе следующим образом:

Каждый раз, когда выполняется сервисный вызов, сначала запускается OPTIONS, чтобы проверить, разрешен ли сервисный вызов, и как только OPTIONS вернет разрешенный, фактический метод вызывается // здесь вы можете добавить URL вызывающего хоста или URL клиента в 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();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...