J'ai un problème avec l'en-tête « Access-contrôle permet origine », j'utiliser le code suivant pour faire une demande:Access-contrôle permet origine ne fonctionne pas avec ajax dans une requête POST
<script type='text/javascript'>
function save() {
$.ajax(
{
type: 'POST',
url: "...",
contentType: 'application/json',
data: '{"cuspp":"228061JGLIR5", "userWeb":"46689"}',
success: function (data) {
console.log("It Works");
console.log (data);
if (data.codigo==0){
console.log(data.mensaje);
}else{
console.log(data.mensaje);
}
},
error: function (jqXHR, textStatus, errorThrown) {
console.log("error");
}
});
}
</script>
Et la réponse elle est faite par un client java:
@POST
@Path("/pcnct020")
@ApiOperation(value = "Save events.", notes = "PCNCT020", responseClass =
"data.Answer")
public Response saveEvents(
@ApiParam(value="Structure of Event", required = false) Evento event) {
Answer<Result> answer = Validator.validate(event);
if (answer.esOK()) {
int size = event.textDetail.length();
int count = size/60;
String comment = event.textDetail;
int secuence = 0;
for (int j = 0; j <= count; j++) {
evento.secuence = secuence;
String newString;
if (j == 0) {
if (size < 60) {
newString = comment.substring(j * 60);
} else {
newString = comment.substring(j * 60,
(j * 60) + 60);
}
} else if (j == count) {
newString = comment.substring(j * 60);
if (newString.equals("")) {
break;
}
} else {
newString = comment.substring(j * 60,
(j * 60) + 60);
if (newString.equals("")) {
break;
}
}
event.textDetail = newString;
answer.setAnswer(event.saveEvent());
secuence = Integer.parseInt(answer.ans.status);
}
}
return Response
.status(200)
.header("Access-Control-Allow-Origin", "...")
//.header("Access-Control-Allow-Credentials", "true")
//.header("Access-Control-Allow-Headers", "Origin")
//.header("Access-Control-Allow-Methods", "GET, POST, DELETE,
PUT, PATCH, HEAD, OPTIONS")
//.header("Conten-Type","application/application/json")
.entity(answer)
.build();
}
Lorsque vous essayez d'accéder à l'adresse indiquée l'en-tête "Access-Control-Allow-Origin", dans la console du navigateur je reçois cette erreur:
XMLHttpRequest ne peut pas annonce http://sdpeapp00024.pe.intranet:9080/ccws/rest/ops/pcnct020. La réponse à la demande de contrôle en amont ne passe pas la vérification du contrôle d'accès: aucun en-tête «Access-Control-Allow-Origin» n'est présent sur la ressource demandée. L'origine 'http://i6.sura.pe' n'est donc pas autorisée.
Je ne sais pas ce que je pourrais faire d'autre. J'ai essayé d'ajouter d'autres en-têtes, comme les commentaires dans la réponse du code java et j'ai toujours la même erreur.
J'apprécierais grandement votre aide.
MISE À JOUR:
public void getService(){
try {
String urlWS = "Web Service Url";
String url = urlWS;
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(url);
httpPost.setHeader("Content-type", "application/json");
StringEntity params =new StringEntity("
{\"cuspp\":\"228061JGLIR0\", \"usuarioWeb\":\"46683\");
httpPost.setEntity(params);
CloseableHttpResponse response =
httpclient.execute(httpPost);
System.out.println(response.getStatusLine());
System.out.println(response.getStatusLine().getStatusCode());
if(response.getStatusLine().getStatusCode() == 200){
BufferedReader brResponse = new BufferedReader(new
InputStreamReader(response.getEntity().getContent()));
String responseText = "";
String output = "";
while ((output = brResponse.readLine()) != null) {
responseText += output;
}
System.out.println(responseText);
}
} catch (Exception excepcion) {
System.out.println(excepcion.toString());
}
finally{
}
}
J'ai fait un client avec Java et fonctionne très bien. Je ne sais pas vraiment pourquoi utiliser Ajax ne fonctionne pas, mais cela montre que le service web fonctionne correctement et que le problème est dans le client.
Salutations.
PS. Dans le code je ne mets pas les urls parce que je ne suis pas autorisé à publier avec plus de deux URL, mais ce sont les mêmes qui sont affichés dans le message d'erreur.
Il semble que vous devez activer CORS pour le point final Cochez cette https://spring.io/guides/gs/rest-service-cors/ –
Merci, mais je ne suis pas à l'aide Cadre de printemps. – DeadByte0x4