Ответ на предварительный запрос не проходит проверку контроля доступа. Ошибка приложения весенней загрузки. - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь получить изображение из MySQL RDS на AWS с помощью Spring Boot и Angular Application. Я проверяю соединение с базой данных, он отлично работает для других сервисов, но есть проблема с контроллером изображений, когда я проверяю браузер, который показывает ошибки в консоли

Доступ к XMLHttpRequest на http://localhost:8080/image/get/test.png от источника http://localhost:4200 был заблокирован политикой CORS: Ответ на запрос предварительной проверки не проходит проверку контроля доступа: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin». и зона. js: 2969 GET http://localhost:8080/image/get/test.png net::ERR_FAILED

Это мой welecom.component. html

<div class="container row">

      <div class="col-md-12">

          <div *ngIf=retrievedImage>

              <img [src]="retrievedImage">

          </div>

      </div>

  </div>

Это welcome.component.ts

 constructor(
    private route:ActivatedRoute,
    private httpClient: HttpClient
    ) {  }

  // void init() {
  ngOnInit(){
    this.refreshImage();

  }

  refreshImage(){
    this.httpClient.get('http://localhost:8080/image/get/test.png')
          .subscribe(
            res => {
              this.retrieveResonse = res;
              this.base64Data = this.retrieveResonse.picByte;
              this.retrievedImage = 'data:image/jpeg;base64,' + this.base64Data;
            }
          );
  }

Я создал 3 класса в классе модели Springboot

package com.in28minutes.rest.webservices.restfulwebservices.getImage;
import javax.persistence.*;

@Entity
@Table(name = "images")
public class ImageModel {

    public ImageModel() {
        super();
    }


    public ImageModel(String name, String type, byte[] picByte) {
        this.name = name;

        this.type = type;

        this.picByte = picByte;

    }

    @Id

    @Column(name = "id")

    @GeneratedValue(strategy = GenerationType.IDENTITY)

    private Long id;

    @Column(name = "name")

    private String name;

    @Column(name = "type")

    private String type;

    @Column(name = "picByte", length = 1000)

    private byte[] picByte;

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public String getType() {

        return type;

    }

    public void setType(String type) {

        this.type = type;

    }
    public byte[] getPicByte() {

        return picByte;

    }
    public void setPicByte(byte[] picByte) {

        this.picByte = picByte;

    }
}

репозиторий

import java.util.Optional;

import org.springframework.data.jpa.repository.JpaRepository;



public interface ImageRepository extends JpaRepository<ImageModel, Long> {

    Optional<ImageModel> findByName(String name);

}

и последний класс контроллеров

@RestController

@CrossOrigin(origins = "http://localhost:4200")

@RequestMapping()
public class ImageUploadController {

    @Autowired
    ImageRepository imageRepository;



    @GetMapping(path = { "/get/{imageName}" })

    public ImageModel getImage(@PathVariable("imageName") String imageName) throws IOException {

        final Optional<ImageModel> retrievedImage = imageRepository.findByName(imageName);

        ImageModel img = new ImageModel(retrievedImage.get().getName(), retrievedImage.get().getType(),

                decompressBytes(retrievedImage.get().getPicByte()));

        return img;

    }

    public static byte[] decompressBytes(byte[] data) {

        Inflater inflater = new Inflater();

        inflater.setInput(data);

        ByteArrayOutputStream outputStream = new ByteArrayOutputStream(data.length);

        byte[] buffer = new byte[1024];

        try {

            while (!inflater.finished()) {

                int count = inflater.inflate(buffer);

                outputStream.write(buffer, 0, count);

            }

            outputStream.close();

        } catch (IOException ioe) {

        } catch (DataFormatException e) {

        }

        return outputStream.toByteArray();

    }

}

Консоль с пружинной загрузкой не выдает специальной ошибки или не завершает свою работу, но выдает предупреждение

wtTokenAuthorizationOncePerRequestFilter: JWT_TOKEN_DOES_NOT_START_WITH_BEARER_STRING

я могу помочь, потому что это может быть 1030 *. *

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