【问题标题】:Why are my custom headers giving an "Adapter operation failed" error?为什么我的自定义标头会出现“适配器操作失败”错误?
【发布时间】:2015-11-13 01:12:54
【问题描述】:

喂!今天,我正在尝试为后端的每个请求添加自定义标头。

和我的DS.RESTAdapter一起玩,我已经试过了:

  • 建议的 3 个headers: 解决方案in the official guide

  • 建议的 2 个ajax: 方法around there

  • 以及我发现的 2 个 jQuery 解决方法(基于 $.ajaxPrefilter$.ajaxSetupthere

到目前为止,我唯一的结果是这个非常模糊的“适配器操作失败”错误:

{
  details: "",
  status: 0,
  title: "The backend responded with an error"
}

我知道:

  • 我的后端表现良好并返回 200 状态(我测试通过 cURL 发送请求)。
  • 奇怪的是,删除我的适配器的 host 设置允许发送请求,但显然是在错误的 URL。
  • 我的问题不是 CSP 问题,因为我目前在本地运行后端和前端。

根据我的调试和我的 Network Inspector 选项卡,AJAX 请求从未发送过(XHR.readyStatus 停留在 0)。

有人遇到过这种情况吗?
任何帮助都会非常可爱!

  • 余烬1.13.11
  • 余烬数据1.13.15
  • jQuery 1.11.3

编辑:重现该错误的神奇最小应用程序是 out here!

希望你会喜欢它!因为我非常爱你,所以我还在我的服务器上提供了一个演示 API 端点。 FM中的详细信息!

奖励!你知道放在剪贴板中最酷的东西是什么吗?
git clone https://github.com/imbrou/ember-data-headers-demo.git

耶耶耶哈! (-:

【问题讨论】:

    标签: javascript jquery ajax ember.js ember-data


    【解决方案1】:

    通常“适配器操作失败”错误是因为您的应用程序在连接到后端时出现问题,通常DS.RESTAdapter没有正确设置,请确保您的@987654322 @ 和 namespace 是正确的。

    例子:

    export default DS.RESTAdapter.extend({
        host: 'http://193.137.170.210:8080',
        namespace: '/api'
    });
    

    【讨论】:

    • 感谢您的回答!我仔细检查了RESTadapter 的配置,如果我删除headers: 钩子,一切正常(没有标题)。我可能忘记了另一个参数吗?我想我已经正确设置了hostnamespace
    【解决方案2】:

    解决了!

    我的后端没有发送正确的 CORS 标头。

    棘手的是,由于未知原因,我的 Firefox 版本(开发版...)在调试时没有在我的网络检查器中显示失败的 OPTIONS 请求。因此,我在那里根本没有调试信息。

    我只能使用... Wireshark 观察失败的预检!

    这可能是圣诞节更新中解决的一个错误,因为我今天无法重现它。太糟糕了...

    不管怎样,无奈之下,我链接了3个截图:

    1. No-preflight example:没有后端安全性(没有“授权”令牌)。
    2. Working example:“授权”标头由客户端请求,并在预检期间由服务器在响应中允许。
    3. Failing example:客户端请求“授权”标头,但服务器不允许。

    希望对您有所帮助,感谢@Vítor 的支持!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-23
      • 1970-01-01
      • 2012-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-20
      相关资源
      最近更新 更多