google app engine - google - ¿Cómo redireccionar permanentemente las URL de http:// `y` www.` a `https://`?
google cloud (5)
(Para Nodo al menos,) en su app.yaml, agregue lo siguiente:
handlers:
- url: /.*
secure: always
redirect_http_response_code: 301
script: auto
Referencia: https://cloud.google.com/appengine/docs/standard/nodejs/config/appref
Tengo un proyecto de Google App Engine. En este proyecto, he configurado un dominio personalizado y un certificado SSL. Por lo tanto, puedo usar https://www.mysite.xxx
, http://www.mysite.xxx
y solo el dominio desnudo mysite.xxx
.
¿Es posible redirigir permanentemente los dos últimos para usar siempre el dominio https://
seguro utilizando la consola de desarrolladores o simplemente tengo que redirigir el código?
Así que puedes agregar "seguro: siempre" a tu archivo yaml
https://cloud.google.com/appengine/docs/python/config/appconfig?hl=en#Python_app_yaml_Secure_URLs
Debe hacerse en su aplicación. Por favor, consulte esta publicación https://.com/a/54289378/5293578
He probado el siguiente código y funcionó para mí (debe poner esto antes del controlador de errores y solicitud por defecto):
/**==== File: server.js =======**/
/** Express configuration **/
// HTTPS Redirection
if (process.env.NODE_ENV === ''production'') {
app.use (function (req, res, next) {
var schema = (req.headers[''x-forwarded-proto''] || '''').toLowerCase();
if (schema === ''https'') {
next();
} else {
res.redirect(''https://'' + req.headers.host + req.url);
}
});
}
/** ... more configuration **/
// Default request handler
app.use(function(req, res, next) {
// ... your code
});
// Default error handler
app.use(function(err, req, res, next) {
// ... your code
});
En aras de la exhaustividad. La forma de Java es establecer la garantía de transporte como confidencial de esta manera.
<security-constraint>
<web-resource-collection>
<web-resource-name>profile</web-resource-name>
<url-pattern>/profile/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
También puede encontrar esto aquí en la documentación .
Por si acaso, no es posible incluir controladores seguros en app.yaml en App Engine Flexible, no hay soporte para ellos:
La configuración segura bajo los controladores ahora está en desuso para el entorno flexible de App Engine. Si necesita redireccionamiento SSL, puede actualizar el código de su aplicación y usar el encabezado Proto X-Forwarded para redirigir el tráfico http. (Referencia: https://cloud.google.com/appengine/docs/flexible/java/upgrading#appyaml_changes )
La referencia es de Java, pero parece ser la misma para Node. Intenté incluir manejadores y no funcionó.
Como puede ver, una posible solución sería "usar el encabezado Proto X-Reenviado para redirigir el tráfico http". No he intentado esto porque me moveré a App Engine Standard, pero alguien lo ha hecho y se explica here .