CORS仍然存在于SecurityError:操作不安全

时间:2016-05-14 18:50:52

标签: javascript jquery ajax node.js cors

我在nodejs中使用Express开发了一个http服务器。 服务器在端口3000上本地运行。

有一个html页面服务(index.html)调用ajax GET内容(作为html内容类型)。 这些ajax内容也在相同的端口上,在同一个http protocole中提供相同的服务器。

在节点服务器应用程序中,我添加了Cors Same Origin标头,但是,index.html在控制台中仍然出现错误:“安全错误:操作不安全”。

在浏览器控制台中,我成功地从节点Express应用程序中看到有关“Access-Control-Allow-Origin”等的标题...

此外,同一个应用程序也在提供另一个页面,index.html可以成功获取没有安全错误的数据。

你还有其他建议吗?

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');

2 个答案:

答案 0 :(得分:0)

  

最初使用Firefox 44.0.2和Chromium 48.0.2564.82进行测试得出:"语法错误:无法执行'打开' on' XMLHttpRequest':' TEXT / HTML'不是有效的HTTP方法。"

你的中间两个论点倒退了。

getData(location.protocol+'//'+location.hostname+(location.port ? ':'+location.port: '')+'/modules/mymodule', 'text/html', 'GET', '#content');

第二个参数应为"GET",第三个参数应为"text/html"

答案 1 :(得分:-1)

尝试在从客户端到服务器的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));
  }
});

此外,如果您没有采用这种方法,请尝试以下方法:

Add Header in AJAX Request with jQuery