Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript XMLHttpRequest返回响应“;“未定义”;NodeJs中的状态为0_Javascript_Node.js_Web Services_Soap_Xmlhttprequest - Fatal编程技术网

Javascript XMLHttpRequest返回响应“;“未定义”;NodeJs中的状态为0

Javascript XMLHttpRequest返回响应“;“未定义”;NodeJs中的状态为0,javascript,node.js,web-services,soap,xmlhttprequest,Javascript,Node.js,Web Services,Soap,Xmlhttprequest,我正在向EJBCA web服务发送请求。请看下面我的代码。我得到undefined作为响应,正在打印的状态为0 let XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest; process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = 0; const fs = require('fs'); let xmlhttp = new XMLHttpRequest(); xmlhttp.open('POST

我正在向EJBCA web服务发送请求。请看下面我的代码。我得到
undefined
作为响应,正在打印的状态为0

let XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest;
process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = 0;
const fs = require('fs');

let xmlhttp = new XMLHttpRequest();

xmlhttp.open('POST', 'https://104.211.18.242/ejbca/ejbcaws/ejbcaws', true, 'ejbcaadmin', 'iBOTControls@123');

var strRequest = `
    <x:Envelope
    xmlns:x="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:ws="http://ws.protocol.core.ejbca.org/">
    <x:Header/>
    <x:Body>
        <ws:getAvailableCAs></ws:getAvailableCAs>
    </x:Body>
    </x:Envelope>
    `;

xmlhttp.setRequestHeader('Content-Type', 'text/xml; charset=utf-8');
xmlhttp.setRequestHeader('Access-Control-Allow-Origin', '*');
xmlhttp.setRequestHeader('Access-Control-Allow-Methods', 'GET, POST, PATCH, PUT, DELETE, OPTIONS');
xmlhttp.setRequestHeader('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept, x-client-key, x-client-token, x-client-secret, Authorization');


//send the SOAP request
xmlhttp.send(strRequest);

//Callback function for response
xmlhttp.onreadystatechange = function () {
    console.log(xmlhttp.response) // returns undefined
    console.log(xmlhttp.status) // prints 0
    fs.writeFileSync('./response.txt', xmlhttp.responseXML)
}

让XMLHttpRequest=require('XMLHttpRequest')。XMLHttpRequest;
process.env['NODE\u TLS\u REJECT\u UNAUTHORIZED']=0;
常数fs=要求('fs');
设xmlhttp=newxmlhttprequest();
xmlhttp.open('POST','https://104.211.18.242/ejbca/ejbcaws/ejbcaws“,对,'ejbcaadmin',”iBOTControls@123');
变量strRequest=`
`;
setRequestHeader('Content-Type','text/xml;charset=utf-8');
setRequestHeader('Access-Control-Allow-Origin','*');
setRequestHeader('Access-Control-Allow-Methods','GET,POST,PATCH,PUT,DELETE,OPTIONS');
setRequestHeader('Access-Control-Allow-Headers','Origin,X-Requested-With,Content-Type,Accept,X-client-key,X-client-token,X-client-secret,Authorization');
//发送SOAP请求
发送(strRequest);
//用于响应的回调函数
xmlhttp.onreadystatechange=函数(){
console.log(xmlhttp.response)//返回未定义的
console.log(xmlhttp.status)//打印0
fs.writeFileSync('./response.txt',xmlhttp.responseXML)
}

向此web服务发送请求需要https客户端身份验证。当我通过浏览器发送请求时,我必须选择一个证书,然后我会收到200个响应。既然我没有在node.js中附加证书,它会失败吗?

为什么要设置访问控制头?它们是响应头,在请求中没有位置……而且它们只适用于浏览器。为什么要麻烦呢?使用类似Axios的库
const response=wait axios.post(url,strequest)
,作业done@JeremyThille我像这样使用axios
let instance=axios.create({headers:{'Content type':'text/xml;charset=utf-8'}});实例.post('https://104.211.18.242/ejbca/ejbcaws/ejbcaws然后((res)=>{console.log(res.data)}).catch((e)=>{console.log(e)})
使用code EconReseties获取套接字挂起错误,我刚刚尝试用Postman调用API,它挂起了。我还遇到了
插座挂断
。我认为它已断开/脱机。这是因为请求中未提供https客户端身份验证。通过浏览器访问api需要客户端证书,api才能正常工作。但我不知道如何通过node.js传递