我正在从浏览器发起ajax发布请求,以进行我正在开发的登录过程。我做了一些逻辑工作,以验证后端(asp.net核心)中用户的凭据并返回一个视图,该视图是应用程序的“登录后”主页。我将其注入DOM。我要返回的该视图具有指向外部js文件的脚本标签以及CSS的链接标签。
我的理解是.cshtml文件被呈现并作为原始html返回到浏览器。然后,浏览器对此进行解析,并查找具有到静态文件的路由的任何链接或脚本标签,并在将这些资源注入DOM后发送对这些资源的获取请求。
在firefox中查看网络登录时,登录后请求成功,返回“登录后”页面,然后发送了对CSS的获取请求,并且成功...然后什么都没有...我有我的脚本标记正确命名,没有发现错误。它应该发送对html中链接的Js的请求。
由于这个问题,我创建了一个克隆应用程序,但是我没有以SPA方式实现此请求周期,而是考虑了MPA体系结构来实现它。使用html表单执行发布请求。确实成功了,并且收到了CSS和JS外部文件。
我的最大困惑是为什么浏览器会启动对CSS文件而不是js文件的请求。客户端或服务器端是否正在执行某些不可思议的操作来实现这一目标?显然,这与正在使用的Ajax请求有关,甚至与我将原始html注入DOM有关。
我了解使用与SPA体系结构完全集成的登录页面可能会有一些抵制,因此 here is why I think it’s perfectly fine.
无论如何,感谢任何能提供一些见解的人。对于这个问题,我深表歉意。只是想学习。
答案 0 :(得分:0)
我要引用@alohci的评论说的一些话。
如果是通过innerHTML或类似的语言,则包含的脚本不会被获取或运行。
对于我所经历的事情,事实证明这是事实。实际上,更新DOM仅用于实时注入HTML。我试图用包含脚本标签的HTML更新DOM的方式,并期望这些脚本被加载确实是错误的选择。事实证明,由于Chrome试图阻止XSS,执行此类操作要比实际操作复杂得多。 我将其标记为答案,因为它说明了我遇到问题的原因。 我不再寻找修复程序,但是如果有人在阅读此解决方案时遇到解决方案,请发布该解决方案。 感谢所有答复。