mercredi 30 janvier 2019

CORS Origin FAILED Spring Boot

I need you because @CROSSOrigin doesn't work and i don't understand why, you have my code here. In fact, i use WebService but i have a problem with the 'Acess-Control-Allow-Origin" i tried all but nothing had worked, please help me !!

SPRING BOOT Project with version 2.1.2 and i would like to build a REST API for ANGULAR 7

PROBLEM:

zone.js:3243 GET http://localhost:8080/apiEquipment/equipments 404
localhost/:1 Access to XMLHttpRequest at 'http://localhost:8080/apiEquipment/equipments' from origin 'http://localhost:4200' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
zone.js:3243 XHR failed loading: GET "http://localhost:8080/apiEquipment/equipments".
core.js:15714 ERROR 
HttpErrorResponse {headers: HttpHeaders, status: 0, statusText: "Unknown Error", url: "http://localhost:8080/apiEquipment/equipments", ok: false, …}

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-parent</artifactId>
                <version>2.1.2.RELEASE</version>
                <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.example</groupId>
        <artifactId>GoSecuriServices</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>GoSecuriServices</name>
        <description>Rest API for GoSecuri Application</description>

        <properties>
                <java.version>1.8</java.version>
        </properties>

        <dependencies>
                <dependency>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-data-jpa</artifactId>
                </dependency>
                <dependency>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-data-rest</artifactId>
                </dependency>
                <dependency>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-web</artifactId>
                </dependency>
                <dependency>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-web-services</artifactId>
                </dependency>

                <dependency>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-devtools</artifactId>
                        <scope>runtime</scope>
                </dependency>
                <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <scope>runtime</scope>
                </dependency>
                <dependency>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-test</artifactId>
                        <scope>test</scope>
                </dependency>
        </dependencies>

        <build>
                <plugins>
                        <plugin>
                                <groupId>org.springframework.boot</groupId>
                                <artifactId>spring-boot-maven-plugin</artifactId>
                        </plugin>
                </plugins>
        </build>

</project>

Application.java

package com.example.GoSecuriServices;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;


@EnableJpaRepositories("com.example.GoSecuriServices.repository") 
@EntityScan("com.example.GoSecuriServices.model")
@ComponentScan
@SpringBootApplication
public class GoSecuriServicesApplication {

        public static void main(String[] args) {
                SpringApplication.run(GoSecuriServicesApplication.class, args);
        }
        
}

Equipment.java (my table)

package model;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import javax.validation.constraints.NotBlank;


@Entity
@Table(name = "Equipment")
@EntityListeners(AuditingEntityListener.class)
@JsonIgnoreProperties(value = {"createdAt", "updatedAt"}, allowGetters = true)
public class Equipment {
        
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long Equipment_id;

    @NotBlank
    private String EquipmentName;

    @NotBlank
    private Integer Nb;


    // Getters and Setters
    public Long getEquipment_id() {
        return this.Equipment_id;
    }
    
    public void SetEquipment_id(Long id) {
        this.Equipment_id = id;
    }
    
    
    public String getEquipmentName() {
        return this.EquipmentName;
    }
    
    public void setEquipmentName(String name) {
        this.EquipmentName = name;
    }
    
    
    public Integer getNb() {
        return this.Nb;
    }
    
    public void setNb(Integer nb) {
        this.Nb = nb;
    }
    
}

EquipmentRepository.java

package repository;

import model.Equipment;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;


@Repository
public interface EquipmentRepository extends JpaRepository<Equipment, Long> {

}

EquipmentController.java

package controller;

import exception.ResourceNotFoundException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import model.Equipment;
import repository.EquipmentRepository;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.util.List;


@RestController
@CrossOrigin(origins = "*", allowedHeaders = "*", maxAge = 3600)
@RequestMapping("/apiEquipment")
public class EquipmentController {
        
        @Autowired
    EquipmentRepository equipmentRepository;
        
        @RequestMapping(value= "/apiEquipment/**", method=RequestMethod.OPTIONS)
        public void corsHeaders(HttpServletResponse response) {
            response.addHeader("Access-Control-Allow-Origin", "*");
            response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
            response.addHeader("Access-Control-Allow-Headers", "origin, content-type, accept, x-requested-with");
            response.addHeader("Access-Control-Max-Age", "3600");
        }
        
        // Get all equipments
        @GetMapping("/equipments")
        public List<Equipment> getAllEquipments() {
                return equipmentRepository.findAll();
        }
        
        
        // Create new equipment
        @PostMapping("/equipments")
        public Equipment createEquipment(@Valid @RequestBody Equipment equipment) {
                return equipmentRepository.save(equipment);
        }
        
        // Get a single equipment
        @GetMapping("/equipments/{id}")
        public Equipment getEquipmentById(@PathVariable(value = "id") Long equipmentId) {
                return equipmentRepository.findById(equipmentId)
                        .orElseThrow(() -> new ResourceNotFoundException("Equipment", "id", equipmentId));
        }
        
        // Update a Equipment
        @PutMapping("/equipments/{id}")
        public Equipment updateNote(@PathVariable(value = "id") Long equipmentId,
                                                @Valid @RequestBody Equipment equipmentDetails) {

            Equipment equipment = equipmentRepository.findById(equipmentId)
                    .orElseThrow(() -> new ResourceNotFoundException("Equipment", "id", equipmentId));

            equipment.setEquipmentName(equipmentDetails.getEquipmentName());
            equipment.setNb(equipmentDetails.getNb());

            Equipment updatedEquipment = equipmentRepository.save(equipment);
            return updatedEquipment;
        }
        
        // Delete a Equipment
        @DeleteMapping("/equipments/{id}")
        public ResponseEntity<?> deleteEquipment(@PathVariable(value = "id") Long equipmentId) {
                Equipment equipment = equipmentRepository.findById(equipmentId)
                                .orElseThrow(() -> new ResourceNotFoundException("Equipment", "id", equipmentId));
                
                equipmentRepository.delete(equipment);
                
                return ResponseEntity.ok().build();
        }
        
}



Aucun commentaire:

Enregistrer un commentaire