我可以使用http协议访问App Engine服务吗?

时间:2019-01-21 10:34:16

标签: google-app-engine

我将nodejs Web服务器部署到GAE灵活的环境中。

访问Web服务器时,它使用https协议。

我尝试使用http协议,但似乎无法访问。

GAE是否支持http

我希望httphttps都可以正常工作。

更新1

app.yaml

runtime: nodejs8
env_variables:
  NODE_ENV: production
  PORT: 8080

app.flex.yaml

service: get-started-flex
runtime: nodejs
env: flex
env_variables:
  NODE_ENV: production
manual_scaling:
  instances: 1
resources:
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10

server.js

const express = require('express');
const path = require('path');
const bodyParser = require('body-parser');
const package = require('./package.json');

console.log('version: ', package.version);
console.log('process.env.NODE_ENV: ', process.env.NODE_ENV);

const app = express();
app.use(bodyParser.urlencoded({ extended: true }));

app.get('/', (req, res) => {
  res.send(`Hello from App Engine! version:${package.version}`);
});

app.get('/submit', (req, res) => {
  res.sendFile(path.join(__dirname, '/views/form.html'));
});

app.post('/submit', (req, res) => {
  console.log({
    name: req.body.name,
    message: req.body.message
  });
  res.send('Thanks for your message!');
});

// Listen to the App Engine-specified port, or 8080 otherwise
const PORT = process.env.PORT || 8080;
app.listen(PORT, () => {
  console.log(`Server listening on port ${PORT}...`);
});

1 个答案:

答案 0 :(得分:2)

在App Engine标准中,您可以选择使用secure标签来声明每个处理程序的安全性,但是,在Flexible中,这是不可能的。

此外,在Flexible中,您可以使用some restrictions向处理程序进行httphttp请求。请注意,正如您在this documentation中所见,应用程序根据请求的X-Forwarded-Proto标头知道要使用哪种协议。

但是,我相信您可以在应用程序的应用程序级别上更改此行为。我的猜测是,您正在应用程序的某些部分执行https,例如,如果您的应用程序中有行require("https")

此外,我发现this answer可以为您提供帮助。如果在处理程序中禁用SSL安全检查,即使连接不安全,您也可以处理请求,但这会使您的应用程序不安全。