如何防止对此JavaScript进行评估?

问题描述 投票:0回答:1

[我试图构建一个基于Web的代码编辑器,并将javascript加载到textarea值中,但我偶然发现该页面正在评估代码。

var url = 'local.js';
var timestamp = new Date().getUTCMilliseconds();
$.get(url, {r:timestamp}, function(data) {
    $("#scriptview").val(data);
    $("#editor").slideDown();
}); 

如何防止GET请求评估代码?我直接从本地文件获取源。

更新:更改代码以添加dataType可以解决此问题。我无法正确使用$ .get语法糖,因此我正在使用$ .ajax

var url = 'local.js';
var timestamp = new Date().getUTCMilliseconds();
$.ajax({url:url, data: {r:timestamp}, success: function(data) {
       $("#scriptview").val(data);
       $("#editor").slideDown();
       return false;
}, dataType: "text"});

我仍然不明白为什么执行了被调用文件中的代码,我没有在脚本标签或任何内容中附加到主体。

javascript jquery get execution evaluation
1个回答
0
投票

jQuery.ajax接受dataType参数。显式设置它将:

  • 设置Accept标题
  • 忽略响应的Content-Type并将数据解析为您说的格式。

如果未设置,则jQuery将根据响应的Content-Type推断数据类型。这是通常好事!

在这种情况下,您正在请求JavaScript(它将附带Content-Type: text/javascript响应标头),但不希望将其视为JavaScript。 jQuery确实支持"script"作为数据类型!

设置dataType(至"text")以覆盖默认处理。

((通过@ freedomn-m来发现问题)

© www.soinside.com 2019 - 2024. All rights reserved.