我有一个我试图与之接口的API,需要设置自定义内容类型标头,值为text/xmlmc
我已经像这样实现了这个
Xmlmc.prototype.submitRequest = function (request,callback) {
var self = this;
var port = portMap[request.service] || 5015;
var endpoint = this.endpoint = 'http://' + this.server + ':' + port;
var xml = request.toXml();
var xhttp;
if (window.XMLHttpRequest) {
xhttp = new XMLHttpRequest();
} else {
// IE 5 and 6 makes us sad. Please don't use it
xhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
//handle request
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4) {
var response = self.handleResponse(xhttp);
callback(response);
}
};
xhttp.open('POST',endpoint,true);
xhttp.setRequestHeader('Content-type', 'text/xmlmc');
//xhttp.setRequestHeader('Content-length', xml.length.toString());
if(this.sessionCookie != '') {
xhttp.setRequestHeader('Cookie', this.sessionCookie);
}
xhttp.send(xml);
};
端点为localhost:5015
当我这样做时,请求失败,甚至从未发送。当我使用像'text/plain'
这样的标准请求标头时,会发送请求,但会返回未实现的状态代码501。如何在xmlhttprequest中设置自定义HTTP标头?
答案 0 :(得分:0)
事实证明这是由于交叉原因问题。即使域是相同的,如果端口不同,这也是一个问题。我通过向我的apache配置添加反向代理来修复此问题,现在我可以在没有交叉原始请求的情况下查询api。遗憾的是,我无权更改API并允许跨域域。