为什么我的自定义标头提供"适配器操作失败"错误?

时间:2015-11-13 01:12:54

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

阿罗哈!今天,我尝试为每个请求添加自定义标头到我的后端。

使用我的DS.RESTAdapter,我已经尝试过了:

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

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

我知道:

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

根据我的调试和我的网络检查器标签,AJAX请求永远不会被发送(XHR.readyStatus被卡在0)。

有人已经面对这个吗?
任何帮助都会非常可爱!

  • Ember 1.13.11
  • Ember Data 1.13.15
  • jQuery 1.11.3

编辑:魔术最小的应用程序再现错误是out here

希望你喜欢它!因为我非常爱你,我还在我的服务器上提供了一个演示API端点。调频中的细节!

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

Yeeeeeeha! ( - :

2 个答案:

答案 0 :(得分:1)

通常“适配器操作失败”错误,因为您的应用程序在连接到后端时遇到问题,通常DS.RESTAdapter未正确设置,请确保hostnamespace是正确的。

示例:

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

答案 1 :(得分:1)

解决了!

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

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

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

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

无论如何,在绝望中,我链接了3个截图:

  1. No-preflight example:没有后端安全性(没有“授权”令牌)。
  2. Working example:客户端请求“授权”标头,并在预检期间由服务器在响应中允许。
  3. Failing example:客户端请求“授权”标头,但服务器不允许。
  4. 希望它有所帮助,感谢@Vítor的支持!

相关问题