【问题标题】:Setting headers in the model hook via ajaxSetup (Ember)通过 ajaxSetup (Ember) 在模型钩子中设置标题
【发布时间】:2015-08-22 05:12:07
【问题描述】:

我正在尝试在拨打电话之前设置标头,但它不起作用。

model: function() {
        debugger;

        Ember.$.ajaxSetup({
            beforeSend: function(xhr) {
                xhr.setRequestHeader(
                    'Authorization', 'bearer 123456'
                )
        }});

        return Ember.$.getJSON('http://addresss/api/locations').then(function(e) {
            debugger;
            console.log(e);
        });
    }

这不断给我以下错误消息:

请求中没有“Access-Control-Allow-Origin”标头 资源。因此不允许使用原点“http://localhost:4200” 访问。

如果我使用 Postman 并设置我的标题,它可以正常工作。

【问题讨论】:

标签: jquery ajax ember.js getjson


【解决方案1】:

有时将 xhr 字段 - withCredentials - 设置为 true 有助于克服此类错误。请尝试:

Ember.$.ajaxSetup({
    beforeSend: function(xhr) {
        xhr.withCredentials = true;
        xhr.setRequestHeader('Authorization', 'bearer 123456');
    }
});

【讨论】:

  • Access-Control-Allow-Origin 标头是否存在于 http://addresss/api/locations 响应中?如果不是,您不能在服务器端先添加此标头的情况下进行跨域请求。
  • 请在开发者工具中检查 getJSON 请求是否附加了您的自定义标头。
  • 我想通了。我有一个需要设置标头的嵌套调用(不同的域),但是因为我在第一次调用之前设置了它,所以它抛出了一个错误。一旦我将 setRequestHeader 逻辑移到第一个 getJSON 调用中,一切正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多