首页 > 解决方案 > 跨域请求被阻止:Django、Axios

问题描述

我正在尝试通过良好的阅读 API 检索有关书籍的信息。到目前为止,我尝试了以下方法:

  1. 通过 Postman:使用 API 密钥和查询字符串的简单 get 请求完美运行,我收到 XML 响应: 在此处输入图像描述

2.通过 django/python 方法:我编写了一个简单的方法,它使用“请求”包来检索数据,如下所示,这也适用于按预期返回的信息:

def get_goodreads_response(book_name):

    api_key = config('GOODREADS_API_KEY')
    response = requests.get('https://www.goodreads.com/book/title.xml?key=' + api_key + '&title=' + book_name)
    response_xml = ElementTree.fromstring(response.content)
    return response_xml
  1. 通过 django 模板中的 axios JS 库:我对 JS 非常陌生,并且在网上找到了我现在放在一起的代码片段,这就是它的样子:
<script>
    axios.get('https://www.goodreads.com/book/title.xml?key={{ api_key }}&title={{ book_name }}')
    .then(response => {
        console.log(response.data)
    })
    .catch(error => console.error(error))
</script>

这会引发以下错误: 在此处输入图像描述

我一点也不知道从哪里开始调试它。你能告诉我哪里出错了吗?我尝试使用 javascript 执行此操作的原因是允许页面的其余部分加载并且不会被 API 调用延迟。这样,只有依赖于 API 的部分才需要时间来加载,其余的内容可以很快出现。目前,我只是尝试使用 Javascript 成功调用 API 并首先获得响应。一旦这可行,我计划在数据可用时加载页面的某些部分。如果大家对这种方法有任何建议,请分享!

标签: javascriptdjangorestaxios

解决方案


推荐阅读