App Engine上的React.js作为服务查询在同一项目中作为另一服务运行的API

时间:2018-08-08 23:13:57

标签: node.js reactjs google-app-engine proxy

React.js前端在project-id.appspot.com上作为默认服务运行。

它正在查询运行在API-dot-project-id.appspot.com上的API。

我知道package.json中的代理设置仅在开发中有效。使用API​​的绝对URL会导致CORS问题。

解决此问题的最佳方法是什么?

这是我尝试过的。

我在后端API服务app.yaml中添加了以下内容:

handlers:
- url: /api/(.*)
  http_headers:
    Access-Control-Allow-Origin: https://project-id.appspot.com

现在尝试部署时出现以下错误:

Unknown url handler type.
<URLMap
    secure=default
    static_files=None
    application_readable=None
    auth_fail_action=redirect
    require_matching_file=None
    static_dir=None
    redirect_http_response_code=None
    http_headers={u'Access-Control-Allow-Origin': 'https://project-id.appspot.com'}
    url=/api/(.*)
    script=None
    upload=None
    api_endpoint=None
    expiration=None
    position=None
    login=optional
    mime_type=None
    >

1 个答案:

答案 0 :(得分:2)

我认为,使用同源策略绕过您的问题的最简单方法是创建(或更新)项目的dispatch.yaml文件,以通过{{1 }}。

那么,您不必担心前端和API之间的同源性问题,因为即使它们作为独立的App Engine服务运行,它们都来自同一域。当将一个应用程序划分为多个服务时,这种方法为我省去了很多麻烦。

您的project-id.appspot.com文件看起来像这样:

dispatch.yaml

然后,您位于dispatch: - url: "*/api/*" service: API 的前端可以简单地向project-id.appspot.com发出请求,这些请求将被路由到API服务。

相关问题