【问题标题】:Bigcommerce api call using oauth token within ajax requestBigcommerce api调用在ajax请求中使用oauth令牌
【发布时间】:2018-04-05 04:34:08
【问题描述】:

我想在 ajax 获取请求中使用 oauth api 令牌详细信息,但我收到 401 未经授权的错误。我已经在 php 文件中检查了我的凭据,但我无法使用它运行 ajax 请求。

我被困在如何在 Bigcommerce oauth 登录的 ajax 请求中传递标头。 API 网址:https://api.bigcommerce.com/stores/{store-hash}/v3/catalog/categories

我的工作 PHP 代码:

$headers = array(
"Accept: application/json",
"X-Auth-Client:".$client_id,
"X-Auth-Token:".$auth_token 
);
$chbig = curl_init($api_url); 
curl_setopt($chbig, CURLOPT_TIMEOUT, 60); 
curl_setopt($chbig, CURLOPT_HTTPHEADER, $headers); 
curl_setopt( $chbig, CURLOPT_SSL_VERIFYPEER, 0 );
curl_setopt( $chbig, CURLOPT_SSL_VERIFYHOST, 0 );
curl_setopt( $chbig, CURLOPT_RETURNTRANSFER, 1 );
$result = curl_exec($chbig); //execute post
$http_status =  (string) curl_getinfo($chbig, CURLINFO_HTTP_CODE);
curl_close($chbig);
echo "<pre>";
print_r($http_status);
print_r($result);

不工作的 Js 代码:

$.ajax({
  url: api_url,
  headers: {
    "X-Auth-Client" : client_id,
    "X-Auth-Token" : auth_token ,
    'Accept':'application/json',
  },
  dataType: 'jsonp',
  type: "GET",
  success: function() { alert('Success!'); }
});

请帮我找到解决办法...

【问题讨论】:

  • ajax 生成的请求看起来是否与 cURL 生成的请求相同(完全相同的标头、内容等?)。您可以使用 Fiddler 之类的工具来比较它们。
  • 没有。我没有收到我在 ajax 请求中传递的任何请求标头
  • "Accept application/json" 和 "dataType: jsonp" 相互矛盾和冲突。我认为您应该删除 jsonp 位。您的 cURL 请求中没有任何内容可以模仿这一点,如果您期待 JSON,那么您就不会期待 JSONP 回调。不是一回事。
  • 是的,但我用它来克服错误“请求的资源上不存在'Access-Control-Allow-Origin'标头”。当我删除 Accept : application/json 时,同样的错误来了,没有变化。
  • “请求的资源上不存在 'Access-Control-Allow-Origin' 标头”告诉您不允许通过 ajax 访问该 URL。如果它是您的服务器,您可以通过将适当的 CORS 标头添加到服务器的响应来修复它。如果它不是您的服务器,那么这是设计使然,除了返回通过 PHP 发出请求外,您无能为力。告诉 jQuery 将数据类型设置为 JSONP 可能会使访问控制错误消失,但这对您没有帮助,因为这意味着请求不再有意义,因为它不是您调用的 JSONP 端点。

标签: ajax api oauth bigcommerce request-headers


【解决方案1】:

您需要请求 JSON 而不是 JSONP。

端点的主机名需要与运行脚本的页面相同,以避免 CORS 问题。

此外,我不建议在前端公开 API 凭据。

【讨论】:

    猜你喜欢
    • 2019-09-27
    • 1970-01-01
    • 2020-12-10
    • 2012-08-19
    • 2018-08-07
    • 2019-10-02
    • 2020-02-19
    • 2012-03-23
    • 2018-08-13
    相关资源
    最近更新 更多