Я пытаюсь создать безопасный метод post в @RestController, который получит сообщение XML и будет защищен от внедрения XML и не будет иметь успеха.
@RestController
@RequestMapping("message")
@CrossOrigin(origins = "http://localhost:4200")
public class XMLMessageExampleController {
@RequestMapping(value = "/example", method = RequestMethod.POST, consumes = MediaType.APPLICATION_XML_VALUE, produces = MediaType.APPLICATION_XML_VALUE)
public ResponseEntity<Customer> getXMLExample(String value) {
System.out.println("yes");
try {
JAXBContext jc = JAXBContext.newInstance(Customer.class);
XMLInputFactory xif = XMLInputFactory.newFactory();
xif.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, false);
xif.setProperty(XMLInputFactory.SUPPORT_DTD, false);
// XMLStreamReader xsr = xif.createXMLStreamReader(new
// StreamSource(value));
XMLEventReader streamReader = xif.createXMLEventReader(new StringReader(value));
Unmarshaller unmarshaller = jc.createUnmarshaller();
Customer customer = (Customer) unmarshaller.unmarshal(streamReader);
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(customer, System.out);
return new ResponseEntity<>(customer, HttpStatus.OK);
} catch (JAXBException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (XMLStreamException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return new ResponseEntity<>(null, HttpStatus.OK);
}
}
Я получил класс клиента
@XmlRootElement(name="customer")
public class Customer {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
И я пытаюсь отправить ниже XML через POSTMAN, как это:
POST-запрос http://localhost:8080/message/example
В разделе тела я выбрал raw и application / xml. И содержание
<customer>
<name>Nikola</name>
</customer>
Я получаю это в ответ:
Неправильный запрос CORS