【发布时间】:2017-01-25 14:29:19
【问题描述】:
我创建了一个微服务 (python),服务于由外部网站提供的 JavaScript 发出的 Web 请求。我需要标题中的属性Access-Control-Allow-Origin,否则浏览器不会从我的微服务中获取输入。
我的问题是 gcloud 灵活的应用程序引擎似乎删除了我的标题。当我从 vm(在 gcloud 中)运行 python 时,我确实得到了标题,但是当我在 gcloud 中将它作为“应用程序”运行时我没有得到它。
我尝试修改app.yaml 以添加access-control-allow-origin : *,但在使用脚本处理程序时不能这样做。
我注入标头的python的一部分:
response_headers = [('Content-type','json/application; charset=utf-8'),('Access-Control-Allow-Origin','*')]
start_response(status,response_headers)
我的app.yaml:
entrypoint: python autocomp.py
env: flex
runtime: python
handlers:
- url: /.*
script: autocomp.py
【问题讨论】:
-
我认为我们没有采取任何措施来删除响应中的标题scratches head。仅供参考 - app.yaml 中的 handlers: 部分在
env:flex中绝对没有任何作用:) -
感谢您的回复。如果你有兴趣,我可以给你python文件,你可以试试。我正在检查浏览器中的标题,当我从 vm(在 gcloud 中)运行 python 时,我确实获得了访问控制,但是当我在 appengine 中运行相同的 python 时,我没有得到它。
-
我在 chrome 控制台中得到以下信息。如果你往下看,在我到达我的微服务之前会发生重定向。我猜在我的容器前面运行的任何 haproxy/lb 都在更改标题。今天晚些时候我会尝试在我的 appengine 中做一个 tcpdump。
-
XMLHttpRequest 无法加载 sadfsadf.appspot.com/?search=p。从“asdfsadf.appspot.com/?search=p”重定向到“asdfsadf.appspot-preview.com/?search=p”已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问 Origin '12.12.12.12'。
标签: python google-app-engine gcloud