CORS реализован с помощью API, но все еще получает ошибку - PullRequest
0 голосов
/ 24 июня 2019

У меня есть API, который отправляет запрос другому API для входа в систему.

Это класс CorsConfiguration из моего REST API (Spring Boot)

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class CorsConfiguration implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/v1/api/**").allowedOrigins("*").allowedMethods("*").allowedHeaders("*");
    }
}

Вмоя конечная точка (/ v1 / api / login), я установил «Access-Control-Allow-Origin» в ответе.

@PostMapping
    public ResponseEntity doLogin(@RequestBody String data, @RequestHeader("Content-Type") String content) throws IOException {
        if (content.equals("application/json;charset=UTF-8") && !data.isEmpty()) {
            HttpHeaders responseHeaders = new HttpHeaders();
            responseHeaders.set("Access-Control-Allow-Origin","*");
            Login login = new ObjectMapper().readValue(data, Login.class);
            if (login.getEmail() != null && login.getPassword() != null) {
                ResponseEntity res = loginService.auth(login);
                return new ResponseEntity(res.getBody(), responseHeaders, res.getStatusCode());
            }
        }
        return new ResponseEntity(HttpStatus.BAD_REQUEST);
    }

Но я все еще получаю эту ошибку на своем веб-интерфейсе (Vue.JS):

Доступ к XMLHttpRequest в 'http://localhost:3000/v1/api/login' от источника' http://localhost:8080' заблокирован политикой CORS: заголовок «Access-Control-Allow-Origin» содержит несколько значений «*, *», но разрешено только одно.

Когда я печатаюответ от другого API на мой, я вижу:

<200, "access_token": "e701bc80b64ab41cfba3efab1c516e3bcc61716b", "expires_in": 1200, "token_type": "Bearer", "scope":"", "refresh_token": "f3549bacde5c10fe76b97a91f34cf7997ab3111d"}, [Дата: "Пн, 24 июня 2019 16:45:52 GMT", Сервер: "Apache / 2.4.18 (Ubuntu)", Cache-Control: "no-store, private ", Pragma:" no-cache ", X-Robots-Tag:" noindex ", Access-Control-Allow-Origin:" * ", Access-Control-Allow-Methods:" POST, GET, PUT, PATCH, DELETE, OPTIONS ", Access-Control-Allow-Headers:" Авторизация, Content-Type, Accept ", Access-Control-Allow-Credentials:" true ", Content-Length:" 169 ", Keep-Alive:" timeout= 5, макс. = 100 ", подключение: "Keep-Alive", Content-Type: "application / json"]>>

И мой ответ на интерфейс:

<200 OK OK, {"access_token":" e701bc80b64ab41cfba3efab1c516e3bcc61716b», "expires_in": 1200, "token_type": "Канал", "Объем": "", "refresh_token": "f3549bacde5c10fe76b97a91f34cf7997ab3111d"}, [Access-Control-Allow-Origin: "*"]>

Любая помощь будет полезна!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...