2012-10-12 84 views
46

Tôi đang cố gắng viết một ứng dụng NodeJS sẽ nói chuyện với API REST OpenShift bằng cách sử dụng phương thức yêu cầu trong gói https. Đây là mã:Yêu cầu HTTPS trong NodeJS

var https = require('https'); 

var options = { 
    host: 'openshift.redhat.com', 
    port: 443, 
    path: '/broker/rest/api', 
    method: 'GET' 
}; 

var req = https.request(options, function(res) { 
    console.log(res.statusCode); 
    res.on('data', function(d) { 
    process.stdout.write(d); 
    }); 
}); 
req.end(); 

req.on('error', function(e) { 
    console.error(e); 
}); 

Nhưng điều này khiến tôi gặp lỗi (mã trạng thái 500 được trả lại). Khi tôi đã làm điều tương tự bằng cách sử dụng curl trên dòng lệnh,

curl -k -X GET https://openshift.redhat.com/broker/rest/api 

Tôi nhận được phản hồi chính xác từ máy chủ.

Có điều gì sai trong mã không?

Trả lời

45

So sánh những gì tiêu đề curl và nút gửi, tôi thấy rằng việc thêm:

headers: { 
    accept: '*/*' 
} 

để options cố định nó.


Để xem phần đầu cuộn tròn nào gửi, bạn có thể sử dụng đối số -v.
curl -vIX GET https://openshift.redhat.com/broker/rest/api

Trong nút, chỉ console.log(req._headers) sau req.end().


Mẹo: Bạn có thể sử dụng https.get(), thay vì https.request(). Nó sẽ đặt phương thức thành GET và gọi số req.end() cho bạn.

+0

Cảm ơn bạn đã 'curl –IX GET' – btk

Các vấn đề liên quan