gpt4 book ai didi

javascript - 从 Controller 返回 JavaScript 作为内容或 JavaScriptResult

转载 作者:行者123 更新时间:2023-12-02 23:14:15 25 4
gpt4 key购买 nike

如果我从 MVC Controller 返回一些 JavaScript 作为其中之一,有什么区别

内容

[HttpPost]
public ActionResult MyEndPoint([System.Web.Http.FromBody] string result)
{
string jsResponse = "<script>";

if(result == "SUCCESS")
{
jsResponse = "SubmitOrder();";
}
else
{
jsResponse = "alert('Problem processing your order, please try again')";
}
jsResponse += "</script>";
return Content(jsResponse);
}

JavaScript结果

  [HttpPost]
public ActionResult MyEndPoint([System.Web.Http.FromBody] string result)
{
string jsResponse = "<script>";

if(result == "SUCCESS")
{
jsResponse = "SubmitOrder();";
}
else
{
jsResponse = "alert('Problem processing your order, please try again')";
}
jsResponse += "</script>";
return JavaScript(jsResponse);
}

另外,当从 MVC Controller 方法/调用返回 JavaScript 时,我需要注意什么安全预防措施吗?

最佳答案

首先,JavaScriptResult 将响应返回为 application/javascript MIME 类型,而不是使用 Content 的默认 text/html () 返回。因此,JavaScriptResult 不会执行您所尝试的操作(执行 JS)。浏览器不仅仅执行响应中发送的任何内容。由于 Content() 实际上正在发送 HTML,因此浏览器可以呈现它,在本例中执行 script 标记中的脚本。我还没有看到 JavaScriptResult 经常被使用,但在我见过的地方,它通常用于动态提供脚本。例如:

Controller

public ActionResult SomeAction() {
...
return JavaScript("script content");
}

查看

<script src="MyController/SomeAction">

关于安全性,您显然希望避免执行从用户传入的任何内容,无论是来自请求正文、查询字符串等。我敢打赌,但这有点设计问题并且您将前端和后端耦合在一起,因此无论如何,最好谨慎使用。

关于javascript - 从 Controller 返回 JavaScript 作为内容或 JavaScriptResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57224030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com