const http = require('http'); //const http = require('https');//使用https時 const fs = require('fs'); const postData = JSON.stringify({ 'username': 'admin',//用戶名 'password': 'admin',//密碼 'grant_type': 'PASSWORD' }); const options = { method: 'POST', protocol: 'http:', hostname: '127.0.0.1',//server ip port: 8080,//server port path: '/api/oauth2/v1/user/access_token', //rejectUnauthorized:false,//https不校驗證書 headers: { 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(postData) } }; const req = http.request(options, (res) => { console.log(`statusCode:${res.statusCode}`); console.log(`headers:${JSON.stringify(res.headers)}`); res.setEncoding('utf8'); let data = ''; res.on('data', (chunk) => { data += chunk; }); res.on('end', () => { console.log(`body:${JSON.stringify(JSON.parse(data), null, 2)}`); var file="src\\environments\\environment.ts" fs.open(file,'a',function(err,fd){ console.log(fd); }); var content="export const environment = {"+ "production: false,"+ "product: 'web',"+ "authorization: {"+ "name: 'ACCESS-TOKEN',"+ "value: '"+JSON.parse(data).access_token+"'"+ "}"+ "};"; console.log(); fs.writeFile(file,content,'utf-8',function(err){ if(err){ console.error(err); }else{ console.log("write ok"); } }); // fs.close(); }); }); req.on('error', (e) => { console.log(`error:${e.message}`); }); req.write(postData); req.end();
經過node運行本段代碼,修改服務端oauth地址以及用戶名密碼以後,能夠將服務端獲取的token寫入angular的environment文件中,開發環境下能夠經過此方式聯調添加token以獲取對服務端的訪問。javascript
爲何會有https調用呢,由於在聯調階段使用代理須要獲取token,調用原來http的oauth2時,返回http狀態301,表示再也不支持http了,因此得換成https請求。java