我使用的是Java 8,Tomcat 8,Spring 3.0,jQuery 2.2.4,Chrome浏览器。
我使用$ .ajax的请求是成功的。我正在远离jQuery,并希望使用XMLHttpRequest对象。我正在获得" Access-Control-Allow-Origin"错误。
我在javascript中设置以下参数。
var xhttp = new XMLHttpRequest();
xhttp.open("POST", request, true);
xhttp.onreadystatechange = function() {
if (this.status == 200) {
alert("Saved Successfully.");
}
};
xhttp.setRequestHeader("Content-type", "plain/text;charset=UTF-8");
xhttp.setRequestHeader("crossDomain", "true");
xhttp.setRequestHeader("Access-Control-Allow-Origin", "*");
xhttp.setRequestHeader("Accept", "text/plain; */*; *");
xhttp.send(data);
以下是jquery调用,有效。
$.ajax({
type: "POST",
url: request,
data: data,
dataType: 'text',
crossDomain: "true",
statusCode: {
200: function(data) {
alert("Saved Successfully.");
}
}
});
我将以下参数设置为响应对象。
response.addHeader( "Content-Type", "text/plain" );
response.addHeader("Access-Control-Allow-Origin", "*");
response.addHeader("Access-Control-Allow-Methods","GET,POST,OPTIONS");
response.addHeader("Access-Control-Allow-Headers","Content-Type, Content-
Range, Content-Disposition, Content-Description");
相同的设置适用于JQuery调用,因此我认为设置不存在问题。
有人可以建议缺少什么吗?
以下代码工作:
var xhttp = new XMLHttpRequest();
xhttp.open("POST", request, true);
xhttp.onreadystatechange = function() {
if (this.status == 200) { }};
//xhttp.setRequestHeader("crossDomain", "true");
xhttp.setRequestHeader("Accept", "text/plain; *//*; *");
//xhttp.withCredentials = true;
xhttp.send(data);