【问题标题】:Converting Curl GET request to Ajax将 Curl GET 请求转换为 Ajax
【发布时间】:2016-08-19 13:44:28
【问题描述】:

我正在尝试复制 Curl 请求以在 Ajax 中下载 PDF。卷曲请求在 PDF 填充文档 here 中进行了解释。以下 Curl 请求成功生成文件内容的响应:

curl -X "GET" "https://api.pdffiller.com/v1/fillable_template/DOCUMENT_ID/download" -H "Authorization: Bearer API_KEY_FROM_STEP1"

我尝试过以下 Ajax:

$.ajax({
    method: 'GET',
    url: 'https://api.pdffiller.com/v1/fillable_template/DOCUMENT_ID',
    headers: {
      Authorization: 'Bearer API_KEY_FROM_STEP1',
    },
})

这会产生以下错误消息:

Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

我也尝试过 xhr 作为标题,这也给出了同样的错误:

$.ajax({
    method: 'GET',
    url: 'https://api.pdffiller.com/v1/fillable_template/DOCUMENT_ID',
    beforeSend: function(xhr) {
        xhr.setRequestHeader('Authorization', 'Bearer ' + 'API_KEY_FROM_STEP1');
        xhr.setRequestHeader('Accept-Language', 'en_US');
    },
})

对我哪里出错有任何想法吗?谢谢!

【问题讨论】:

标签: jquery ajax curl


【解决方案1】:

您还需要将CORS 标头添加到您的请求中,因为您想做一个跨域请求。您请求的url 也必须允许CORS,但是因为它是一个API 调用,所以应该在他们这边允许...

$.ajax({
    method: 'GET',
    url: 'https://api.pdffiller.com/v1/fillable_template/74275400',
    crossDomain: true,
    xhrFields: {
        withCredentials: true
    },
    headers: {
        Authorization: 'Bearer S1qAS0YFCfUbRemx2OGaeUcmm6mni1EXK3T1FkkL',
    },
});

【讨论】:

  • 我需要添加 CORS 是有道理的,但是运行上面的代码给了我相同的错误消息:/
  • 那么,api.pdffiller.com 不允许跨域请求。 @Sean 你确定你可以使用这个 api 吗?
  • 我想我得给他们发电子邮件,但我有一个付费帐户和一个 API 密钥。只能发出 Curl 请求的 API 有什么意义?
  • 浏览器出于安全原因阻止它。其他人喜欢 curl 忽略它。 @sjf125
猜你喜欢
  • 1970-01-01
  • 2015-10-06
  • 2016-10-10
  • 2021-03-29
  • 2018-02-16
  • 1970-01-01
  • 2019-11-04
  • 1970-01-01
相关资源
最近更新 更多