Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

同时使用两个proxy的情况下,只执行了后一个proxy的内容 #91

Open
komomoo opened this issue Jun 17, 2022 · 9 comments
Open

Comments

@komomoo
Copy link

komomoo commented Jun 17, 2022

因为一些原因,页面注入了两段脚本,两段脚本相互独立,都分别打包进了ajax-hook,都使用了proxy方法。
当两段脚本同时使用的时候,表现于,只执行了后一段脚本的proxy内的代码,前一段脚本的proxy内容未执行。
例如,前一段脚本proxy操作写入参数1,后一段脚本proxy操作写入参数2。两段脚本同时使用,只会写入参数2。
怎样才能在这种情况下,两段脚本里的proxy都能执行到呢?表现为同时能写入参数1和2。

@waterbang
Copy link

你可以fork一下修改源码的proxyAjax函数,存一下你传入的状态,然后需要增加一个函数,在你的proxy 写入参数2的时候执行一下,告诉脚本我要写入了(路过说两句,仅供参考)

@komomoo
Copy link
Author

komomoo commented Jun 20, 2022

你可以fork一下修改源码的proxyAjax函数,存一下你传入的状态,然后需要增加一个函数,在你的proxy 写入参数2的时候执行一下,告诉脚本我要写入了(路过说两句,仅供参考)

不行的,两段脚本都是独立维护的,意思是,都是不同的人维护。不能使用侵入式的方式

@waterbang
Copy link

那你试试直接把那个闭包保存的方式换成静态变量,每次执行proxy都读一下

@komomoo
Copy link
Author

komomoo commented Jun 20, 2022

那你试试直接把那个闭包保存的方式换成静态变量,每次执行proxy都读一下

不能侵入式

@waterbang
Copy link

那你试试直接把那个闭包保存的方式换成静态变量,每次执行proxy都读一下

不能侵入式

您好,您说的不能入侵式指的是不能自己维护一份定制版的ajax-hook是吗?还是说不能修改你页面的脚本?我上面的意思是自己二次开发一下ajax-hook

@ZengTianShengZ
Copy link

自己 fork 一份来开发到没啥,但为啥内部要做这个限制,是基于什么场景考虑的呢

  // Avoid double hookAjax
  win[realXhr] = win[realXhr] || win.XMLHttpRequest

win[realXhr] = win[realXhr] || win.XMLHttpRequest

@DAHUIAAAAA
Copy link
Collaborator

3.0.1版本支持了多次hook,可以更新下试试

@DSeaStar
Copy link

DSeaStar commented Jun 29, 2023

3.0.1版本支持了多次hook,可以更新下试试

连续使用两次proxy(),还是只执行了后一个proxy的内容,是用法不对吗?有示例吗?
第一次用proxy(),第二次用hook()和两次都用hook()是可以的

@DAHUIAAAAA
Copy link
Collaborator

可以看看:示例

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants