proxy.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /**
  2. * 站点 remove.bg 设置了X-Frame-Options的Header,不能被嵌入到iframe,这里加个proxy来delete header
  3. * @type {{addBackgroundRemoveListener}}
  4. * @author zhaoxianlie
  5. */
  6. let BgProxy = (() => {
  7. let listenerAddedFlag = false;
  8. /**
  9. * web请求截获,重置response Headers
  10. * @param callback
  11. */
  12. let addListener = (callback) => {
  13. if (listenerAddedFlag) {
  14. callback && callback();
  15. return false;
  16. }
  17. chrome.webRequest.onHeadersReceived.addListener((info) => {
  18. let headers = info.responseHeaders;
  19. for (let i = headers.length - 1; i >= 0; --i) {
  20. let header = headers[i].name.toLowerCase();
  21. if (header === 'x-frame-options' || header === 'frame-options') {
  22. headers.splice(i, 1);
  23. }
  24. }
  25. return {responseHeaders: headers};
  26. },
  27. {
  28. urls: ['https://www.remove.bg/'],
  29. types: ['sub_frame']
  30. },
  31. ['blocking', 'responseHeaders']
  32. );
  33. listenerAddedFlag = true;
  34. };
  35. return {
  36. addBackgroundRemoveListener: addListener
  37. };
  38. })();
  39. module.exports = BgProxy;