带有亚马逊产品 API 的 Angular CORS

Posted

技术标签:

【中文标题】带有亚马逊产品 API 的 Angular CORS【英文标题】:Angular CORS with Amazon Product API 【发布时间】:2017-05-17 01:53:29 【问题描述】:

创建了一个 MEAN 堆栈应用程序,我有一个角度组件,在页面加载时它正在向亚马逊产品 API 发出请求。我在本地主机(节点/快速后端)上本地运行和测试。

这是我的组件中的基本请求代码:

getAmazonTackle(amz:amazonservice) 
var req:Object = 
  method: this.amazonservice.Method,
  url: this.amazonservice.Endpoint, 
  headers: 
    //"Access-Control-Allow-Origin":"*"
  ,
  data: this.amazonservice.Data,
  withCredentials: false

console.log(JSON.parse(JSON.stringify(req)));
this.$http(req).then(
  function(response) 
    console.dir('The response: '+response);
  ,
  function(response) 
    console.dir(response);
    console.dir('The error:'+response);
  
)

当我没有 Access-Control-Allow-Origin 标头时,在浏览器中访问该页面时,我会在 Chrome 开发控制台中看到以下内容:

XMLHttpRequest cannot load http://webservices.amazon.com/onca/xml?. 
No 'Access-Control-Allow-Origin' header is present on the requested resource. 
Origin 'http://localhost:3000' is therefore not allowed access.

当我添加 Access-Control-Allow-Origin 标头时,我收到以下信息:

Response to preflight request doesn't pass access control check: 
No 'Access-Control-Allow-Origin' header is present on the requested resource. 
Origin 'http://localhost:3000' is therefore not allowed access.

我要确定的是我做错了还是亚马逊 API 不支持 CORS。

【问题讨论】:

你的问题解决了吗? 【参考方案1】:

我遇到了类似的问题,发现如果我创建了启用 cors 的 http 处理程序,它将作为您的服务器和亚马逊服务器之间的中间件。这样我们就可以解决这个cors问题。 创建起来很简单,我已经写好了。

Develop Angular2 Application with real server APIs

查看上述帖子中的问题和答案。 我在github上发布了类似的代码,如果需要我会分享位置。

注意:到目前为止,我处理了 get 请求,但添加其他方法相当容易。 https://github.com/Anil8753/CORSHttpHandler

【讨论】:

以上是关于带有亚马逊产品 API 的 Angular CORS的主要内容,如果未能解决你的问题,请参考以下文章

带有流星的亚马逊产品 API

亚马逊产品 api 的 Python 包装器 [重复]

使用亚马逊产品广告 API - Python 搜索书籍

如何从亚马逊的产品广告 API 中获取产品名称?

在亚马逊附属产品 API 中出现问题以从亚马逊获取产品

没有亚马逊产品广告 API 的亚马逊 ASIN 到 ISBN