我在Google Domains(www.example.com)上有一个网站,它是由Gcloud托管的。我按照此处列出的说明设置了SSL和https:https://cloud.google.com/appengine/docs/standard/python/securing-custom-domains-with-ssl
基本上,我刚刚运行了gcloud beta app domain-mappings update example.com --certificate-management='AUTOMATIC'
现在我确实可以访问https://example.com和https://www.example.com。但我也可以访问这些域的不安全的http版本。
如何设置我的Google域以始终使用https?如果有人输入http://example.com,我希望它转到https网站。
记录: 我的裸域(example.com)有4条A记录和4条AAAA记录。
我的www.example.com域名中包含1条带有alias = www。
的CNAME记录答案 0 :(得分:2)
您是否尝试在secure: always
?
app.yaml
handlers:
- url: /youraccount/.*
script: accounts.app
login: required
secure: always
总是请求与此处理程序不匹配的URL HTTPS会自动重定向到HTTPS URL 路径。查询参数将保留用于重定向
https://cloud.google.com/appengine/docs/standard/python/config/appref#handlers_element
答案 1 :(得分:1)
不确定您使用的是哪种后端语言,但是您可以通过检查请求标头然后重定向来强制执行ssl。例如:
if request.environ.get('HTTPS') == 'off':
return redirect('https://www.example.com' + request.environ.get('PATH_INFO'), 301)
答案 2 :(得分:1)
Alex的回答(见评论)让我走上了正确的道路。
首先meteor add gadicohen:headers
添加headers
信息。
在我的路由器逻辑(Meteor中的铁路由器)的前钩子中,我检查x-forwarded-proto
是否为http
。如果是,请将http
替换为https
,然后转到该网址。我确保我也不在本地主机上,以便我可以开发网站
Router.onBeforeAction(function () {
<some other logic>
// Redirect http to https
if (headers.get('x-forwarded-host') !== "localhost:3000") {
if (headers.get('x-forwarded-proto') === "http") {
window.location = window.location.href.replace('http', 'https')
}
}
});
答案 3 :(得分:0)
secure: always
仍可在所有标准环境中使用,但所有灵活环境,see documentation here或{{3}中的安全选项已已弃用 }}
如果您在当前环境中需要此功能,建议的解决方案需要更改您的应用程序代码。使用自定义HTTP标头X-Forwarded-Proto
将HTTP流量重定向到HTTPS,或使用here for Node.js。
答案 4 :(得分:0)
对于具有默认Tomcat的Java和Spring Boot,以下设置适用于Google App Engine flex:
<ImgWrap>
<Img src={homeObjOne.img} alt={alt} />
</ImgWrap>