【发布时间】:2019-04-07 12:42:44
【问题描述】:
我有一个 Google AppEngine 项目在生产环境中运行良好,但在本地运行不佳。
有一个 React 浏览器应用在本地运行在 3001 端口,一个 python api 服务运行在 9090。
当我尝试通过 React 客户端上传文件时,我首先调用一个 REST 端点,它将 blobstore get_upload_url() 返回给客户端。这个 url 类似于:http://localhost:9090/_ah/upload/aghkZXZ-...
当我从浏览器客户端向该 url 发出 POST 请求以实际上传文件时,我在 OPTIONS 预检检查中得到 405。据我了解,这是由于端口不同。这只发生在本地 App Engine SDK 中,因为我在生产中使用 dispatch.yaml 设置将所有内容都放在同一个域/端口上。
我前段时间研究了 SDK 代码并进行了修改。 (https://gist.github.com/blainegarrett/4d3b3081d09b4ff7be00765eb32b0d94)
但是,自从将 Google Cloud 升级到 218.0.0 后,hack 被覆盖了,我又回到了原点。
以下是 blobstore 上传 URL 的标头:
OPTIONS /_ah/upload/aghkZXZ-Tm9uZXIiCxIVX19CbG9iVXBsb2FkU2Vzc2lvbl9fGICAgICA77ALDA HTTP/1.1
Host: localhost:9090
Connection: keep-alive
Origin: http://localhost:3001
Access-Control-Request-Method: POST
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
我目前正在专门使用 vanilla XMLHttpRequest() 进行上传调用。
是否有人对如何在端口不同时绕过预检检查和/或允许以不那么骇人听闻的方式对上传 url 进行 OPTIONS 检查有任何建议?
【问题讨论】:
标签: google-app-engine file-upload cors xmlhttprequest blobstore