【问题标题】:jquery post request not working getting 404 statusjquery post请求无法获得404状态
【发布时间】:2015-03-20 12:20:29
【问题描述】:
$.ajax({
            type: 'POST',
            url: 'http://apius.faceplusplus.com/detection/detect',
            crossDomain: true,
            cache: false,
            async: true,
            headers: {
                "Authorization": "Basic " + Base64.encode('abc123' + ":" + 'xyz123')
              },
            data: dataURL,    //sending image 
            dataType: 'jsonp',
            success: function(responseData, textStatus, jqXHR) {
               alert(JSON.stringify(responseData));
            },
            error: function (responseData, textStatus, errorThrown) {
                alert(JSON.stringify(responseData));
            }
        });

dataURL 是 //Base064 编码 & 压缩到 20 kb 以下 var dataURL = compressImage(canvas, 20); 基本上我正在发送检测图像。 错误是:加载资源失败:服务器响应状态为 404(未找到) 我在警报中收到状态 404。 请提出任何解决方案。

【问题讨论】:

  • 您提出了GET 请求,而不是POST 请求
  • 对不起拼写错误..但在 POST 的情况下也会出现同样的错误。
  • dataUrl 是 var dataURL = canvas.toDataURL('image/jpeg', compression);
  • 我会检查你的 api 密钥。
  • 这些是虚拟键,我已经检查过该部分是否正常

标签: javascript jquery cross-domain http-post


【解决方案1】:

我在处理 ajax 时发现的一个好习惯是 我总是用浏览器手动检查 ajax url,所以如果它有问题,我的 ajax 肯定不会工作。

所以我为你做了同样的事情,我找到了这些数据:

{
    "error": "MISSING_ARGUMENTS: api_key", 
    "error_code": 1004
}

那么您是否希望在成功处理函数中获得这些数据? 这还不错,但由于响应状态设置为错误,因此它不会进入成功函数。

要检查错误打开开发者控制台(谷歌浏览器)->网络->标题,然后查看status code的值,你会得到:

400 BAD REQUEST

所以你得到的是错误 400 而不是 404。我希望你能得到这个,因为你没有传递 api_key 参数。

更新:
我不确定服务器从哪里查找密钥(来自标头与参数)。但是要使用 ajax 作为数据参数发送它:

data:{ dataUrl: dataUrl, data api_key:"abc123",api_secret :"xyz123"}

【讨论】:

  • 您能否建议我如何发送我在上面代码的标头中发送的身份验证数据 api_key:abc123 和 api_secret :xyz123。
猜你喜欢
  • 2015-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-26
  • 1970-01-01
  • 2022-01-08
相关资源
最近更新 更多