Я пытаюсь получить изображение из 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 *. *