JSONP跨域
JSONP的使用1.浏览器的同源策略
2.一个源的定义如果两个页面的协议,端口和域名都相同,则两个页面具有相同的源,这就是同源。
参考文章
--- 3.JSONP实现跨域访问数据JSONP(JSON with Padding)是JSON的一种“使用模式” ajax请求受同源策略影响,不允许进行跨域请求 而script标签src属性中的链接却可以访问跨域的js脚本,利用这个特性,服务端不再返回JSON格式的数据,而是返回一段调用某个函数的js代码,在src中进行了调用,这样实现了跨域。 JSONP是服务器与客户端跨源通信的常用方法。最大特点就是简单适用,老式浏览器全部支持,服务器改造非常小。 JSONP的基本思想是,动态创建一个 <script>//SRL server rendered javascript button.addEventListener('click',(e) => { //动态创建script var script = document.createElement('script') let functionName='blog1'+parseInt(Math.random()*100000,10) //callback window[functionName]=function(result){ if(result==='success'){ amount.innerText=amount.innerText-1 }else{} } //发送请求 script.src = 'http://feile.com/pay?callback='+functionName document.body.appendChild(script) script.onload = function (e) { // debugger e.currentTarget.remove() delete window[functionName] } script.onerror = function (e) { alert('fail') e.currentTarget.remove() delete window[functionName] } }) </script> 上面的代码通过动态创建添加script元素,向服务器发送请求,查询字符串必须有callback参数,用来指定回调函数的名字。 response.write(`${query.callback}.call(undefined,'success')`) 服务器收到这个请求以后,会将数据放在回调函数的参数位置返回。这时只要浏览器定义了对应的回调函数,该函数就会立即被调用。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |