设置自定义内容类型xmlhttprequest

时间:2016-08-09 15:24:19

标签: javascript http-headers xmlhttprequest

我有一个我试图与之接口的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标头?

1 个答案:

答案 0 :(得分:0)

事实证明这是由于交叉原因问题。即使域是相同的,如果端口不同,这也是一个问题。我通过向我的apache配置添加反向代理来修复此问题,现在我可以在没有交叉原始请求的情况下查询api。遗憾的是,我无权更改API并允许跨域域。