express输出一段JS到前端执行
发布于 6 年前 作者 tanweijie-nodeJS 3963 次浏览 来自 问答

1596377473-5a1e269d90530_articlex.png

上面这个图是在PHP里面的做法,请求过来,返回一个JS执行到前端(其实就是输出一个JS文件吧,我是这么理解的)

2765438587-5a1e27340b20e_articlex.png

上面是我在express中的,输出的JS没有在前端执行

1714077504-5a1e2a08ce3bb_articlex.png

捉包看到类型已经是JS了

3976721279-5a1e2aac09e60_articlex.png

里面的内容是一个alert,但是并没有执行

(这个操作在PHP是可行的)

这个问题我在segmentfault提过,并没有人回答。。。。只有人说有安全问题(问他有什么安全问题,又不告诉我)(我只是想知道怎么做) express输出一段JS到前端执行

4 回复

res.send传回去的是字符串,浏览器再进行解析,对于浏览器来说,要执行js,那么就是解析到有script标签。

<script>alert('ok')</script>

安全问题是指xss,具体是什么搜索一下就知道了。

@foora

会不会跟我用的发送请求有关?我在node中用的是axios ,在PHP里用的是JQ。 PHP的情况是:AJAX发送请求,不需要对返回做任何处理,alert出现了 $(‘input’).click(function(){ $.post(’/index/layer/layer’,function(e){ }); }) 并没有处理e node的情况是:接收到返回的字符串,没有执行

浏览器: image.png

服务端: res.setHeader(“Content-Type”," application/x-javascript"); res.send("<script>alert(‘OK’)</script>");

这个- -啊啊啊,有没有类似的例子借鉴一下。。。。实在是找不到相关资料 (eval不知道为什么不太想用啊- -,)

@tanweijie-nodeJS php我没使用过,具体不太了解。 但是要让浏览器执行js

eval("alert('ok')")
或者
把'<script>alert(‘OK’)</script>' 插入到html中去。

上面两种无论哪种都是要在回调里操作。 至于php那个为什么可以,或许是jq内部有做处理吧

还有这样传js回前端执行不太推荐,最好是传些标识code,然后在回调里判断。

@foora

嗯。。。虽然没能搞明白,不过谢谢了

回到顶部