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
>
答案 0 :(得分:2)
我认为,使用同源策略绕过您的问题的最简单方法是创建(或更新)项目的dispatch.yaml
文件,以通过{{1 }}。
那么,您不必担心前端和API之间的同源性问题,因为即使它们作为独立的App Engine服务运行,它们都来自同一域。当将一个应用程序划分为多个服务时,这种方法为我省去了很多麻烦。
您的project-id.appspot.com
文件看起来像这样:
dispatch.yaml
然后,您位于dispatch:
- url: "*/api/*"
service: API
的前端可以简单地向project-id.appspot.com
发出请求,这些请求将被路由到API服务。