上面这个图是在PHP里面的做法,请求过来,返回一个JS执行到前端(其实就是输出一个JS文件吧,我是这么理解的)
上面是我在express中的,输出的JS没有在前端执行
捉包看到类型已经是JS了
里面的内容是一个alert,但是并没有执行
(这个操作在PHP是可行的)
这个问题我在segmentfault提过,并没有人回答。。。。只有人说有安全问题(问他有什么安全问题,又不告诉我)(我只是想知道怎么做)
res.send传回去的是字符串,浏览器再进行解析,对于浏览器来说,要执行js,那么就是解析到有script标签。
<script>alert('ok')</script>
安全问题是指xss,具体是什么搜索一下就知道了。
会不会跟我用的发送请求有关?我在node中用的是axios ,在PHP里用的是JQ。 PHP的情况是:AJAX发送请求,不需要对返回做任何处理,alert出现了 $(‘input’).click(function(){ $.post(’/index/layer/layer’,function(e){ }); }) 并没有处理e node的情况是:接收到返回的字符串,没有执行
浏览器:
服务端: 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,然后在回调里判断。
嗯。。。虽然没能搞明白,不过谢谢了