鍍金池/ 問答/HTML/ node中https使用時(shí)請(qǐng)求不成功,似乎url解析有問題

node中https使用時(shí)請(qǐng)求不成功,似乎url解析有問題

問題描述:

最近在做electron的小開發(fā),在使用node中https模塊發(fā)起一個(gè)https請(qǐng)求時(shí)總是報(bào)錯(cuò),
我請(qǐng)求的地址是一個(gè)公司用于測(cè)試的地址,要求使用POST和異步請(qǐng)求,數(shù)據(jù)格式為json,人家服務(wù)接口請(qǐng)求格式就是json
最開始使用的是AJAX請(qǐng)求,似乎涉及到跨區(qū)請(qǐng)求的問題,請(qǐng)求并沒有返回?cái)?shù)據(jù)。
之后嘗試了node的https模塊,但是請(qǐng)求不成功。url各種嘗試。。。都不行!
代碼貼在下面,跪求各路大神指點(diǎn),本人小白在此謝過!??!

我的代碼:

//這個(gè)是用ajax請(qǐng)求的
function send_req(serverUrl, req_client_json, successHandler, errorHandler){
    $.ajax({  
        type : "POST",  
        url : serverUrl,
        crossDomain: true,
        data : req_client_json,  
        contentType : "application/json",  
        dataType : "json",  
        success : successHandler,
        error : errorHandler
    });
}

//然后這個(gè)是使用htts請(qǐng)求的
function send_req(serverUrl, req_client_json){
    var options = {
        host: serverUrl,
        port: '20682',
        path: '/',
        method: 'POST',
        json: true,
        headers: {
            'Content-Type': 'application/json',
            'Content-Length': req_client_json.length
        }
    }
    const post_req = https.request(options, function(res){
        console.log(1111111111111)
        res.setEncoding('utf8')
        res.on('data', function(chunk){
            console.log(chunk);
        })
        res.on('error', (err)=>{
            aletr("Error: " + err)
        })
    })

    post_req.write(req_client_json);
    post_req.end();
}

下面貼下我的報(bào)錯(cuò)信息:

在使用ajax請(qǐng)求的時(shí)候(直接執(zhí)行了請(qǐng)求error的情況):

圖片描述


在使用https請(qǐng)求的時(shí)候,起初我把url設(shè)置成了一個(gè)ip地址,錯(cuò)誤如下:

圖片描述

應(yīng)該是請(qǐng)求沒有成功,控制臺(tái)并沒有打印一系列的111111111

之后,我更改了etc/host文件,將ip地址替換成了一個(gè)域名,就是programtest.com,錯(cuò)誤信息和使用ip地址相同

然后,在ip地址和域名的前面分別加上https://,似乎這么做并不對(duì),然后報(bào)錯(cuò)信息是這個(gè):

圖片描述

之后有看網(wǎng)上使用url.parse解析的,然后也試了試這種方法,具體的改動(dòng)就是:
 //在https請(qǐng)求的參數(shù)options中
 host: url.parse(serverUrl)
然后錯(cuò)誤信息如下
使用一個(gè)ip地址或者域名,在url前面加上https://或者不加都是一樣的錯(cuò)誤:

圖片描述

回答
編輯回答
毀與悔

報(bào)錯(cuò)信息其實(shí)很明確了啊,把鍋推給給你測(cè)試的地址的人,然后開始摸魚吧。


貴司的測(cè)試接口直接放到公網(wǎng)上,心也是真大

HTTPS證書不是隨便找一個(gè)就行的,必須域名和證書對(duì)應(yīng),我看到115.182.198.228帶的證書域名是srv.xinge.com,那就必須用srv.xinge.com這個(gè)域名。但是srv.xinge.com指向的是115.182.5.40,所以可以推測(cè)是后端復(fù)制粘貼了證書就以為能用,把鍋推給他們,去吃飯吧。

或者也可以做好好先生,給https.requestoptions加上

checkServerIdentity: () => {},

跳過域名和證書對(duì)應(yīng)的檢查。但是不知道之后會(huì)不會(huì)再出什么問題,所以還是建議甩鍋 [斜眼]

2018年1月11日 05:58