2017-09-01 66 views
1

所以我已经成功地在本地主机上的节点上设置了https服务器。 它的工作,但我有第三方api链接,我想打电话,并在前端显示数据。当我尝试在前端获取它时,我得到的请求的资源上没有“Access-Control-Allow-Origin”标题。 所以我认为我需要为此创建https代理。 非常感谢。使用节点和https本地主机获取第三方链接的API

,这里是我的node.js

var https = require('https'); 
var fs = require('fs'); 

var options = { 
    key: fs.readFileSync('key.pem'), 
    cert: fs.readFileSync('cert.pem') 
}; 

var a = https.createServer(options, function (req, res) { 
    res.writeHead(200); 
    res.end("Nemke"); 
}).listen(8000); 

和链接到API https://api.kursna-lista.info/b7b80a59415046c33449b6a2a96bd4d8/kursna_lista

现在我想实现的是:

fetch('https://localhost:8000/api.kursna-lista.info/b7b80a59415046c33449b6a2a96bd4d8/kursna_lista').then(res => res.json()).then(data => data).catch(err => err) 
+1

这并没有太大的意义。你为什么试图从'localhost'获取数据?难道你只是使用'fetch('https://api.kursna-lista ...'? – Phil

+0

从本地主机访问第三方URL没有任何意义,因为它不是你的本地主机,你只能访问那些你想要做'fetch('https://api.kurs ...'? –

+0

这听起来像你真的想调用一个外部API并从中返回数据。我可以建议使用[Express .js](https://expressjs.com/),并使用类似[axios](https://www.npmjs.com/package/axios)向其他服务发送请求。点击'localhost:8000/some_external_call'这样的特定端点来执行你想要的任何动作 – stetsmando

回答

0

您需要创建一个控制器在你的后端,它调用第三方API并将结果返回到前端。而你的前端将打电话给控制器,而不是打给第三方。

但是,如果您可以更改此第三方应用程序的源代码,则可以启用交叉来源,并且应该修复问题。

How to enable cross-origin resource sharing (CORS) in the express.js framework on node.js

+0

Op不使用Express。 – stetsmando

+0

@Alex谢谢你的回复,但是我在哪里放置api的链接,所以我可以在前端调用它,我想我需要调用它获取('nodefileserver.js')? – NemanjaD

相关问题