一、没法获取非同源的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)`)
})
复制代码