如何允许Google App Engine节点js脚本调用跨域?

时间:2019-01-08 09:42:20

标签: node.js google-app-engine google-cloud-platform

我是GAE / NODEJS的新手。有很多建议可以将由GAE托管的调用称为跨域调用,但是我很难让我的node js应用程序调用另一个域API。要让GAE允许跨域调用,我需要做些什么吗?我的代码是:

app.get('/listProducts', (req, res) => {
    request.get('https://[cross domain]/api/2.0/products', function (error, response, body) {
  console.log('error:', error); // Print the error if one occurred
  console.log('statusCode:', response && response.statusCode); // Print the response status code if a response was received
  console.log('body:', body); // Print the HTML for the Google homepage.
}).auth(null, null, true, '[key goes here]');

2 个答案:

答案 0 :(得分:0)

您可以允许配置app.yaml文件或在http标头中进行设置。 这里是doc(正在寻找 CORS支持

遵循示例:

  

您可能有一个访问资产的游戏应用 mygame.appspot.com   由 myassets.appspot.com 托管。但是,如果mygame试图   对myassets进行JavaScript XMLHttpRequest,它将不会成功   除非myassets的处理程序返回一个    Access-Control-Allow-Origin :响应标头包含值   http://mygame.appspot.com

这是使静态文件处理程序返回所需的响应标头值的方法:

handlers:
- url: /images
  static_dir: static/images
  http_headers:
    Access-Control-Allow-Origin: http://mygame.appspot.com
  # ...

注意:如果您想允许所有人访问您的资产,则可以使用通配符'*'代替http://mygame.appspot.com

答案 1 :(得分:0)

was doing newbie - i should have returned a response code, eg response.status(200).send("ok").end();