jsonp请求拦截
前言:
最近遇到的一個問題,可以通過攔截修改jsonp請求去解決;搜了下關鍵字“攔截jsonp請求”,沒有找到想要的答案,都是搜到一些跨域的文章…所以自己實現記錄了下,希望幫助到正在搜的伙伴。
思路
理解jsonp原理的話,實現起來很簡單,就直接貼代碼啦(監聽dom創建,識別script標簽,修改src)
代碼
(function () {var originalCreateElement = document.createElementfunction changeReqLink (script) {var srcObject.defineProperty(script, 'src', {get: function () {return src},set: function (newVal) {src = newValscript.setAttribute('src', newVal)}})var originalSetAttribute = script.setAttributescript.setAttribute = function () {var args = Array.prototype.slice.call(arguments)if (args[0] === 'src' && args[1].includes('callback=')) {console.log('請求地址: ' + args[1])args[1] = args[1].replace(/test/g, 'test1')console.log('修改后的地址: ' + args[1])}originalSetAttribute.call(script, ...args)}}document.createElement = function (tagName) {var dom = originalCreateElement.call(document, tagName)tagName.toLowerCase() === 'script' && (changeReqLink(dom))return dom} })()測試
總結
- 上一篇: Node + ts + puppetee
- 下一篇: 王者解除关系对方不回应需要等多久