如何防止此 javascript 被评估?
How do I prevent this javascript from being evaluated?
我正在尝试构建一个基于 Web 的代码编辑器,并将 javascript 加载到文本区域值中,我偶然发现该页面正在评估代码。
var url = 'local.js';
var timestamp = new Date().getUTCMilliseconds();
$.get(url, {r:timestamp}, function(data) {
$("#scriptview").val(data);
$("#editor").slideDown();
});
如何防止 GET 请求评估代码?我直接从本地文件获取源代码。
更新:
更改代码以添加数据类型可解决此问题。我无法正确地获得 $.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"});
我仍然不明白为什么要执行调用文件中的代码,我没有在脚本标记或任何内容中附加到主体。
jQuery.ajax
接受一个 dataType
参数。明确设置将:
- 设置
Accept
header
- 忽略响应的
Content-Type
,按照你说的格式解析数据。
如果您不设置它,那么 jQuery 将从响应的 Content-Type
推断数据类型。这通常是一件好事!
在这种情况下,您正在请求 JavaScript(将附带 Content-Type: text/javascript
响应 header)但不希望它被视为 JavaScript . jQuery 确实支持 "script"
作为数据类型!
设置 dataType
(至 "text"
)以覆盖默认处理。
(归功于@freedomn-m 发现问题)
我正在尝试构建一个基于 Web 的代码编辑器,并将 javascript 加载到文本区域值中,我偶然发现该页面正在评估代码。
var url = 'local.js';
var timestamp = new Date().getUTCMilliseconds();
$.get(url, {r:timestamp}, function(data) {
$("#scriptview").val(data);
$("#editor").slideDown();
});
如何防止 GET 请求评估代码?我直接从本地文件获取源代码。
更新: 更改代码以添加数据类型可解决此问题。我无法正确地获得 $.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"});
我仍然不明白为什么要执行调用文件中的代码,我没有在脚本标记或任何内容中附加到主体。
jQuery.ajax
接受一个 dataType
参数。明确设置将:
- 设置
Accept
header - 忽略响应的
Content-Type
,按照你说的格式解析数据。
如果您不设置它,那么 jQuery 将从响应的 Content-Type
推断数据类型。这通常是一件好事!
在这种情况下,您正在请求 JavaScript(将附带 Content-Type: text/javascript
响应 header)但不希望它被视为 JavaScript . jQuery 确实支持 "script"
作为数据类型!
设置 dataType
(至 "text"
)以覆盖默认处理。
(归功于@freedomn-m 发现问题)