在前端開發(fā)中,我們經(jīng)常會用到Http請求來獲取數(shù)據(jù)。而在Http請求中,除了最基本的GET和POST請求外,還有一種更加安全的https請求。今天我們就來了解一下javascript中的https請求。
首先,需要明確https請求與http請求的區(qū)別。http請求是明文傳輸?shù)模菀妆缓诳透`取數(shù)據(jù),而https請求則是通過ssl加密傳輸?shù)?,大幅度提高了?shù)據(jù)的安全性。在實(shí)際開發(fā)中,我們通常會使用https請求來獲取一些敏感信息,比如用戶的密碼等。
javascript中的https請求同樣分為GET和POST請求。我們來看一下GET請求的代碼示例:
function httpsGet(url){ return new Promise((resolve, reject) =>{ const xhr = new XMLHttpRequest(); xhr.open('GET', url); xhr.onreadystatechange = () =>{ if(xhr.readyState != 4){ return; } if(xhr.status === 200){ resolve(xhr.responseText); }else{ reject(new Error(xhr.responseText)); } }; xhr.send(); }); } const url = 'https://api.github.com/users/octocat'; httpsGet(url) .then(response =>{ console.log('Response:', response); }) .catch(error =>{ console.error('Error:', error); });我們可以看到,GET請求的代碼與普通的http請求沒有什么區(qū)別。唯一的區(qū)別就是url的協(xié)議變?yōu)榱薶ttps。 接下來,我們來看一下POST請求的代碼示例:
function httpsPost(url, data){ return new Promise((resolve, reject) =>{ const xhr = new XMLHttpRequest(); xhr.open('POST', url); xhr.setRequestHeader('Content-Type', 'application/json'); xhr.onreadystatechange = () =>{ if(xhr.readyState != 4){ return; } if(xhr.status === 200){ resolve(xhr.responseText); }else{ reject(new Error(xhr.responseText)); } }; xhr.send(JSON.stringify(data)); }); } const url = 'https://api.github.com/repos/javascript/standards/contents/README.md'; const data = { message: 'Auto commit README.md', content: btoa('This is a new README.md') }; httpsPost(url, data) .then(response =>{ console.log('Response:', response); }) .catch(error =>{ console.error('Error:', error); });POST請求的代碼與GET請求的代碼相比,多了一個設(shè)置請求頭的部分。在https中,我們需要設(shè)置Content-Type為application/json,來告訴服務(wù)器我們要傳遞的數(shù)據(jù)類型為json字符串。 總的來說,https請求比http請求安全性更高,而javascript中的https請求與http請求的使用方式基本相同,只需要將url的協(xié)議變?yōu)閔ttps即可。在實(shí)際開發(fā)中,我們應(yīng)該盡可能地使用https請求來保障我們用戶數(shù)據(jù)的安全。