Ошибка 403 для запроса опций CORS перед полетом.Как исправить? - PullRequest
1 голос
/ 24 мая 2019

Мой проект состоит в том, чтобы создать страницу ввода для ввода текста внутри и отправить его в mysql (phpmyadmin). Я использую пружинный багажник 2.1.4 и угловой 7. Заранее спасибо за расследование! любовь

Я сосредоточен на GraphController.java и пробую несколько вариантов с @CrossOrigin. Я пытался назвать это в глобальном, но ничего ... Вот мой источник https://spring.io/blog/2015/06/08/cors-support-in-spring-framework Я все тоже ничего не перепробовал

Моя сущность (Graph.java)

@Entity(name = "graphiques")
@Table(name ="graphiques")
@Data
@NoArgsConstructor
@AllArgsConstructor

public class Graph {

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(name ="id")
  private Long id;
  @Column(name ="xml")
  private String xml;

  public Long getId() {
    return id;
  }

  public void setId(Long id) {
    this.id = id;
  }

  public String getXml() {
    return xml;
  }

  public void setXml(String xml) {
    this.xml = xml;
  }

}

Мой GraphController.java

@RestController
@CrossOrigin
@RequestMapping("/insert")
public class GraphController {
  @Autowired
  GraphRepository graphRepository;

  @GetMapping
  @ResponseBody
  public String addGraph(@RequestParam String xml) {
    Graph graph = new Graph();
    graph.setXml(xml);
    graphRepository.save(graph);
    String ret = "Graph has been added";
    return ret;
  }

Мой xml-insert-form.component.ts в Angular

  insertForm: FormGroup;
  xml: string;
  submitted = false;
  graph: Graph;

  initForm() {
    this.insertForm = this.formBuilder.group({
      xml: ['', Validators.required]
    });
  }
  onSubmit() {
    const xml = this.insertForm.get('xml').value;
    const newGraph = new Graph(xml);
    this.graphService.createNewGraph(newGraph).subscribe(
      graph => {
        console.log('onSubmit OK');
      },
      error => console.log('Erreur lors de l\'ajout du nouveau graph')
    );
    this.submitted = true;
  }

В mysql я получил 1 базу данных с именем "sogetiauditback" и таблицу с именем "graphiques" со столбцами "id" и "xml". (xml будет простым текстом из входного текста)

Ожидаемый результат: ошибка 403 и мои данные внутри ввода отправлены в mysql Сообщение об ошибке (Google Chrome:
- polyfills.js:3251 OPTIONS http://localhost:8282/insert 403 - Access to XMLHttpRequest at 'http://localhost:8282/insert' from origin 'http://localhost:4200' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.)

Ответы [ 2 ]

3 голосов
/ 24 мая 2019

Добавьте конфигурацию CORS, как показано ниже:

CORSConfig.java

@Configuration
public class CORSConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowedMethods("GET", "POST", "PUT", "DELETE", "HEAD");
    }
}
2 голосов
/ 24 мая 2019

Вы можете настроить проблему cors на стороне клиента, используя заголовок «Access-Control-Allow-Origin»

или пытаясь использовать этот

@CrossOrigin(origins = "http://localhost:4200")
@GetMapping
public String addGraph(@RequestParam String xml) {
   Graph graph = new Graph();
   graph.setXml(xml);
   graphRepository.save(graph);
   String ret = "Graph has been added";
   return ret;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...