2016-06-20 152 views
1

我是想实现一个mailchimp api并用这样的镀铬错误跨越跨域问题就来了:CORS问题进行API调用的反应/终极版应用

的XMLHttpRequest无法加载https://us9.api.mailchimp.com/3.0/members。 对预检请求的响应未通过访问控制检查:否 请求的 资源上存在“访问控制 - 允许来源”标头。原因'http://example.com'因此不允许 访问。响应有HTTP状态代码501

经过一番研究,事实证明,API调用使我从浏览器是由(我简单地调用从我的行动的一个API),但要解决这个问题,他们需要在服务器上进行。

因此,我试图找出一种方法来从我的操作内部的服务器调用api来绕过此问题。

编辑: 一个我找到了解决办法是使用JSONP对于这一点,但我不得不放弃它为好,因为我不能用它进行身份验证。

+1

有相当多的(https://npms.io/search?term=mailchimp)节点包与Mailchimp进行交互。 – robertklep

+0

您可以使用['node-http-proxy'](https://github.com/nodejitsu/node-http-proxy)来代理MailChimp API。 – Steven

+0

@Steven这看起来像一个整洁的解决方案,我尝试了解他们的文档,但仍不明白应该如何设置它,你能举一个例子作为答案吗? – Ilja

回答

0

我找到解决的办法是代理API调用通过下列方式表达:

在您的快递配置:

import request from 'request' 

app.use('/api', function (req, res) { 
    let url = 'your_api_url' + req.url 
    req.pipe(request(url)).pipe(res) 
}) 

这是什么让你做的,而不是调用https://myapi.com/endpoint在您的组件将使用/api/endpoint这种方式快递将用您的API网址替换您的服务器上的所有/api实例,并从服务器本身执行api调用。

+0

我有一个类似的问题,调用谷歌地方API。我如何从我的React动作调用这个。现在我有这样的事情。 \t let url ='$ {GOOGLE_URL}/textsearch/json?query = $ {location}&pagetoken = {{nextPageToken}&radius = 500&key = $ {GOOGLE_KEY}'如何在我的电话中使用上述express API。 –

相关问题