Javascript 向服务URL而不是版本URL发出请求时失败

Javascript 向服务URL而不是版本URL发出请求时失败,javascript,python,google-app-engine,flask,Javascript,Python,Google App Engine,Flask,我正试图在Google App Engine上设置一项服务,但在让XmlHttp与之一致工作时遇到了困难 部署后,可以从两个不同的URL访问网站:service dot project.appspot和version dot service dot project.appspot,由于某些原因,两者之间存在不一致 下面是一些确实给我带来麻烦的演示代码 #routes.py 从flask导入渲染模板 从…起导入应用程序 @app.route(“/test”,methods=[“GET”]) def

我正试图在Google App Engine上设置一项服务,但在让XmlHttp与之一致工作时遇到了困难

部署后,可以从两个不同的URL访问网站:
service dot project.appspot
version dot service dot project.appspot
,由于某些原因,两者之间存在不一致

下面是一些确实给我带来麻烦的演示代码

#routes.py
从flask导入渲染模板
从…起导入应用程序
@app.route(“/test”,methods=[“GET”])
def test():
返回呈现模板(“test.html”)
@app.route(“/api/test”,methods=[“GET”])
def api_测试():
return“它工作了!”
#模板/test.html
调试
测试一下。
函数运行(){
设xmlHttp=newxmlhttprequest();
xmlHttp.onreadystatechange=()=>{
if(xmlHttp.readyState==4&&xmlHttp.status==200)
document.getElementById(“out”).innerText=xmlHttp.responseText;
}
open(“GET”,“/api/test”,true);
xmlHttp.send(空);
}
#service.yaml
运行时:python38
服务:姓名
自动缩放:
最小空闲实例:1
实例类:F4
入口点:gunicorn-b:$PORT main:app
环境变量:
...
当我尝试并按下版本url上的按钮时,它会按预期工作,“it works!”会打印到按钮上方的div中,但在服务url(未指定版本)上,页面本身会加载,但按下按钮会导致请求挂起几秒钟,然后再将其打印到控制台:

GET https://service-dot-project.appspot.com/api/test [HTTP/2 404 Not Found 7912ms]
使用本地flask调试环境进行测试时,不会出现问题

谷歌应用程序引擎是否有一些我应该知道的事情导致了这个问题的发生?
/api
是保留端点吗?我的其余端点在服务url上工作,这是唯一中断的api端点。我唯一的
app.before\u请求
方法失败的原因是403,而不是404,因此这不是原因。

如果您转到

并选择有问题的服务,是否有其他版本接收流量而不是您想要的版本

另外,尝试转到日志,找到404的条目,展开它,查看哪个版本抛出该错误,如果转到

并选择有问题的服务,是否有其他版本接收流量而不是您想要的版本


此外,请尝试转到日志,找到404的条目,展开它,并查看哪个版本引发了该错误,在
protoPayload
versionId
下,问题似乎是由项目上运行的其他服务之一引起的

我们的默认服务在dispatch.yaml中定义

调度:
-url:“/api*”
模块:其他服务
它正在拦截对
myservice dot project
发出的所有请求,并将它们重定向到
otherservice dot project

版本url不是这样的原因可能是因为没有具有相同版本号的默认服务版本


修复方法是更改默认服务的分派url,或者更改新服务的API端点的url。

问题似乎是由项目上运行的其他服务之一引起的

我们的默认服务在dispatch.yaml中定义

调度:
-url:“/api*”
模块:其他服务
它正在拦截对
myservice dot project
发出的所有请求,并将它们重定向到
otherservice dot project

版本url不是这样的原因可能是因为没有具有相同版本号的默认服务版本


修复方法是更改默认服务的调度url,或更改新服务的API端点的url。

所有流量都将使用我尝试使用的版本。没有流量分配。我只是添加了一个编辑,尝试访问日志,找到404的条目,展开它,看看哪个版本抛出了错误,在
protoPayload
versionId
下,日志中根本没有任何内容。通过版本URL的成功运行会显示出来,但导致404的原因不会显示出来。然而,有很多关于谷歌云调试器的回溯。这可能与此有关吗?也许分享一个追踪,但我不这么认为。如果您在日志中根本看不到404,那么我认为您的应用引擎服务一开始甚至没有收到请求。为了更深入地检查您的应用引擎日志和设置,我建议您与GCP一起打开一个案例。这里需要更多的细节来理解为什么会发生这种情况。所有的流量都朝着我正在尝试的版本发展。没有流量分配。我只是添加了一个编辑,尝试访问日志,找到404的条目,展开它,看看哪个版本抛出了错误,在
protoPayload
versionId
下,日志中根本没有任何内容。通过版本URL的成功运行会显示出来,但导致404的原因不会显示出来。然而,有很多关于谷歌云调试器的回溯。这可能与此有关吗?也许分享一个追踪,但我不这么认为。如果您在日志中根本看不到404,那么我认为您的应用引擎服务一开始甚至没有收到请求。为了更深入地检查您的应用引擎日志和设置,我建议您与GCP一起打开一个案例。这里需要更多的细节来理解为什么会发生这种情况。这种情况是通过
xmlHttp
发生的,还是您自己