ruby-on-rails 纯JavaScript的AJAX请求出现“错误控制器::InvalidCrossOriginRequest”错误

3ks5zfa0  于 5个月前  发布在  Ruby
关注(0)|答案(2)|浏览(61)

我有这样的代码:

jQuery.ajax({
  url: url  // Some URL
});

字符串
上面的代码运行得很好。但是,我需要将此代码转换为纯JS。所以,我做到了:

var xhttp = new XMLHttpRequest();
xhttp.open("GET", url, true);
xhttp.send();


但是,在这里,当AJAX请求被触发时,我在Rails服务器日志中得到这个错误:
Controller::InvalidCrossOriginRequest -安全警告:另一个网站上的嵌入式标记请求受保护的JavaScript。如果您知道自己在做什么,请继续并禁用此操作的伪造保护,以允许跨源JavaScript嵌入。

注意:我在link_toFix I referred)中传递format: :js时也遇到过类似的错误。但是,这种情况发生在纯JavaScript代码中。

我该如何解决此问题?

rqmkfv5c

rqmkfv5c1#

添加xhttp.setRequestHeader("X-Requested-With", "XMLHttpRequest");修复了rails中的交叉原点错误。
现在,代码看起来像这样:

var xhttp = new XMLHttpRequest();

xhttp.open("GET", url, true);
xhttp.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xhttp.send();

字符串

kulphzqa

kulphzqa2#

使用Rails,在Hotwire Stimulus控制器中,当用户在FullCalendar示例上选择一个日期范围时,我想获取一些数据。我遇到了这个错误,发现到处都是各种各样的错误建议,所以我将在这里使用我最终使用的错误建议(基于接受的解决方案):

fetch('/path/' + start_date + '/' + end_date,
  {
    method: "GET",
    headers: {
      'X-CSRF-Token': document.querySelector('meta[name="csrf-token"]').content,
      'Content-Type': 'application/json',
      "X-Requested-With": "XMLHttpRequest"
    },
    credentials: "same-origin",
  })
  .then(response => response.text())
  .then(data => {
    console.log(data);
    // append to an element here
  });

字符串
对于我的特殊情况,现在我只需要改变控制器,使它呈现一个部分,并发送html。

相关问题