由于CORS,Hubspot API无法正常工作

时间:2018-02-02 06:55:05

标签: javascript api hubspot

我在AJAX请求中使用Hubspot API。但在控制台

中显示以下错误

如何在Hubspot中启用 Access-Control-Allow-Origin

Failed to load https://api.hubapi.com/content/api/v2/pages?hapikey=demo: 
Response to preflight request doesn't pass access control check: No 'Access-
Control-Allow-Origin' header is present on the requested resource. Origin 
'https://preview.hs-sites.com' is therefore not allowed access.

如果我无法在Hubspot中启用 Access-Control-Allow-Origin ,那么下一个使用此API的选项是什么。

2 个答案:

答案 0 :(得分:1)

HubSpot API不支持跨源CORS / AJAX请求,根据他们的支持,通过客户端公开API密钥。

您可以做的是创建一个代理服务器,您可以从您自己的服务器发出请求并调用Hubspot端点,如下所示:

var express = require('express');
var request = require('request');
var app = express();
var port = process.env.PORT || 8081;

const HUBSPOT_API_KEY = 'xxxx-xxxx-xxxx-xxxx-xxxx'
const HUBSPOT_ENDPOINT = `https://api.hubapi.com/content/api/v2/blog-posts?hapikey=${HUBSPOT_API_KEY}`

app.get('/api/hubspot', function(req, res) {
  request(HUBSPOT_ENDPOINT, function (error, response, body) {
    console.log('error:', error);
    console.log('statusCode:', response && response.statusCode);
    console.log('body:', body);
    res.json(body);
  });
});

app.listen(port);

请记住,这只是一个例子,向您解释使用nodejs / express / request的想法,它不适合生产!您可以修改或使用您喜欢的服务器语言,平台等来实现相同的目标。

您可以将此原则用于任何不支持跨源请求的端点。

答案 1 :(得分:0)

您还可以将访问权限设置为允许URL'https://preview.hs-sites.com'用于服务器上的访问- 在对Azure上托管的服务URL进行后期调用时,我遇到了类似的问题,这对我有用。