【问题标题】:iron-ajax GET returning bad requestIron-ajax GET 返回错误请求
【发布时间】:2015-07-16 21:47:41
【问题描述】:

我正在使用聚合物入门套件并配置了 app.js 文件,以便它创建和 iron-ajax 元素并向服务器发送调用以获取数据。 代码如下:

var _ajax = document.createElement('iron-ajax');
    _ajax.url = 'url';
    _ajax.headers = '{ "Authorization": "auth (number)"}';
    _ajax.method = 'GET';
    _ajax.handleAs = 'json';
    _ajax.debounceDuration = 300;
    _ajax.auto = true;

此代码返回的错误告诉我,标头中的“授权”没有通过,但是当我在请求之前控制台记录 iron-ajax 元素时,我可以在标头中看到“Auth”。 我在这段代码中做错了吗?什么是正确的方法,所以标头实际上通过了我的服务器身份验证。 注意:使用谷歌“高级 REST api”测试服务器,它可以在标题中设置“Auth”正常工作。 (REST 服务器使用 slim php)

【问题讨论】:

    标签: jquery polymer


    【解决方案1】:

    headers 需要一个对象,而不是表示对象的 JSON 字符串:

    var _ajax = document.createElement('iron-ajax');
        _ajax.url = 'url';
        _ajax.headers = {"Authorization": "auth (number)"};
        _ajax.method = 'GET';
        _ajax.handleAs = 'json';
        _ajax.debounceDuration = 300;
        _ajax.auto = true;
    

    【讨论】:

    • 感谢您的回复。这就是我所想的,但是基于“Auth”在标头中不可见,给了我相同的错误(错误请求)。所以我查看了 iron-ajax 文档并得到了这个:<iron-ajax auto url="http://somesite.com" headers='{"X-Requested-With": "XMLHttpRequest"}'></iron-ajax>check headers。顺便说一句,那是服务器端$headers = apache_request_headers(); if (isset($headers['Authorization'])) { // some code } else {$response['meta']["error"] = true; // some code echoResponse(400, $response); $app->stop(); }
    • 当您通过 HTML 属性设置它时,您使用对象的 JSON 字符串表示,Polymer 将其转换为 Object。如果您是通过 Javascript 中的属性设置它,那么您可以直接将其传递给 Object
    • 哦,好吧没听懂。谢谢澄清,但仍然面临错误请求的问题。根据服务器代码,只有在未设置 $headers['Authorization'] 的情况下,我才应该收到错误 400。不明白
    • 由于某些原因,我让它工作,“授权”在小写时有效。不知道为什么,但我很高兴知道
    猜你喜欢
    • 2013-01-21
    • 1970-01-01
    • 2017-10-21
    • 1970-01-01
    • 2015-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-02
    相关资源
    最近更新 更多