一、沒法獲取非同源的cookie、localStorge,sensionStorge, indexedDB,ajax
二、 iframe 頁面沒法獲取express
三、 沒法發送ajax,fetch 請求,瀏覽器拒絕,須要服務端支持跨域設置CORS:json
"Access-Control-Allow-Origin", "*"
複製代碼
response.setHeader("Access-Control-Allow-Origin", "*");
複製代碼
response.setHeader("Access-Control-Allow-Methods", "*");
複製代碼
response.setHeader("Access-Control-Expose-Headers", "*");
複製代碼
response.setHeader("Access-Control-Max-Age", "3600");
複製代碼
js類型
,而非 XHRfunction encodeParam(url, obj) {
// 1.將傳入的data數據轉化爲url字符串形式
// {id:1,name:'jack'} => id=1&name=jack
const dataString = url.indexof('?') ? '?' : '&';
for(let key in data) {
dataString += `${key}=${(data[key] !== undefinded ? data[key] : '' }`
}
return dataString;
}
const jsonp = function (url, data, callback) {
//promise 返回 new Promise((resolve, reject)=>{...callback(data)-->resolve(data)...})
let dataString = encodeParam(url, data);
// 處理url 中的回調函數
const cbfnName = `my_json_cb_${Math.ramdom().toString().repalce('.', '')}`;
dataString += `callback=${cbfnName}`;
// 3.建立一個script標籤並插入到頁面
const scriptEle = document.createElement('script');
scriptEle.src = `${url}${dataString}`
// 四、掛載回調函數
window[cbfnName] = function(data) {
callback(data);
// 處理完回調函數的數據以後,刪除jsonp的script標
document.body.removeChild(scriptEle);
}
document.body.appendChild(scriptEle);
}
複製代碼
let express = require('express');
let app = express();
app.get('/student', function(req, res) {
let {...callback...} = res.query;
res.end(`${callback}(data)`)
})
複製代碼