register-decrypt-interceptors.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import { createDecryptIframe } from './decrypt-iframe'
  2. let cacheIframe = null
  3. export default function registerDecryptInterceptor (service) {
  4. // 注册响应拦截器
  5. service.interceptors.response.use(async (response) => {
  6. const res = response.data
  7. const headers = response.headers
  8. // 如果请求不是200,有可能是403(被拉黑了),就直接跳过本次拦截
  9. if (response.status !== 200) {
  10. return response
  11. }
  12. // 需要验证
  13. const needDecrypt1 = res.antiEncrypt && res.data
  14. const needDecrypt2 = headers.antiEncrypt && res.data
  15. if (needDecrypt1 || needDecrypt2) {
  16. // 等待解密iframe加载完成
  17. const iframe = createDecryptIframe()
  18. cacheIframe = iframe
  19. const base64Key = res.secretKey
  20. const cipherText = res.data
  21. const result = await iframe.doDecrypt(base64Key, cipherText)
  22. if (result && result.plainText) {
  23. const p = JSON.parse(result.plainText)
  24. console.log('解密后的内容: -------->', p)
  25. response.data = p
  26. }
  27. return response
  28. } else {
  29. return response
  30. }
  31. }, error => {
  32. return error
  33. })
  34. }