Javascript CORS仍处于安全状态错误:操作不安全
我在nodejs中使用Express开发了一个http服务器。 服务器正在端口3000上本地运行 提供了一个html页面(index.html),它调用ajax获取内容(作为html内容类型)。 这些ajax内容也在同一个端口上的同一个服务器上以相同的http协议提供 在节点服务器应用程序中,我添加了Cors同源头,但是index.html在控制台中仍然有错误:“安全错误:操作不安全” 在浏览器控制台中,我成功地看到了node Express应用程序中关于“访问控制允许来源”等的标题 此外,同一个应用程序也在为另一个页面提供服务,index.html可以在没有任何安全错误的情况下成功获取数据 你还有别的建议吗Javascript CORS仍处于安全状态错误:操作不安全,javascript,jquery,ajax,node.js,cors,Javascript,Jquery,Ajax,Node.js,Cors,我在nodejs中使用Express开发了一个http服务器。 服务器正在端口3000上本地运行 提供了一个html页面(index.html),它调用ajax获取内容(作为html内容类型)。 这些ajax内容也在同一个端口上的同一个服务器上以相同的http协议提供 在节点服务器应用程序中,我添加了Cors同源头,但是index.html在控制台中仍然有错误:“安全错误:操作不安全” 在浏览器控制台中,我成功地看到了node Express应用程序中关于“访问控制允许来源”等的标题 此外,同一
function getData(url, type, CType, id) {
//var xhr = new XMLHttpRequest();
//xhr.open(type, url, true);
//xhr.withCredentials = true;
//xhr.onload = function () {
//console.log(xhr.responseText);
//if(CType == 'text/html') { $(id).append(xhr.responseText); }
//};
//xhr.send();
$.ajax({
url: url,
type: type,
crossDomain:true,
cors:true,
success: function(data){
$(id).append(data);
},
error: function(data) {
console.log('ERROR '+url);
console.log(data);
$(id).append(getError(url));
}
});
getData(location.protocol+'//'+location.hostname+(location.port ? ':'+location.port: '')+'/modules/mymodule', 'text/html', 'GET', '#content');
尝试在从客户端到服务器的ajax调用中添加这三个参数
crossDomain:true,
cors:true,
contentType:"application/json;charset=utf-8",
编辑一:
$.ajax({
url: url,
type: type,
method:"GET",
crossDomain:true,
cors:true,
contentType:"application/html;charset=utf-8"
success: function(data){
$(id).append(data);
},
error: function(data) {
console.log('ERROR '+url);
console.log(data);
$(id).append(getError(url));
}
});
此外,如果您没有正确使用此方法,请尝试以下方法:
最初使用Firefox 44.0.2和Chromium 48.0.2564.82进行测试时给出:“SyntaxError:未能在'XMLHttpRequest'上执行'open':'TEXT/HTML'不是有效的HTTP方法。” 你的中间两个论点倒过来了
第二个参数应该是
“GET”
,第三个参数“text/html”
,不幸的是,它以相同的错误结束。crossDomain:true,
会导致jQuery抑制它通常添加到同一来源的XHR请求中的自定义HTTP头,以防它获得到不同来源的HTTP重定向。如果这是问题所在,则错误可能是抱怨访问控制允许标头。cors:true,
不是ajax函数支持的选项。它将被忽略。contentType:“application/json;charset=utf-8”
毫无意义。OP正在发出GET请求,没有请求正文来描述的内容类型。是的,这没有意义,因为您的返回数据类型是htmlIt看起来两个请求都是HTTP或HTTPS(不是混合)。是这样吗?是否涉及任何重定向?(事实上,看起来你是在向同一个来源发出请求,为什么你只是使用一个相对的URL?)你在哪个浏览器中测试?如果您尝试不同的浏览器,您是否会收到不同的(也许更具启发性的)错误消息?>为什么只使用相对URL?哼这是个好问题。。没有理由。。。刚刚在relative中测试过:getData('/modules/mymodule',text/html',GET',content');我得到了相同的结果。最初使用Firefox 44.0.2和Chromium 48.0.2564.82进行测试时给出:“SyntaxError:未能在“XMLHttpRequest”上执行“open”:“TEXT/HTML”不是有效的HTTP方法。”ohhhh。。。。亲爱的。。。我感觉很。。。。。愚蠢的
getData(location.protocol+'//'+location.hostname+(location.port ? ':'+location.port: '')+'/modules/mymodule', 'text/html', 'GET', '#content');