Назад | Перейти на главную страницу

Ошибка после «развертывания приложения gcloud» с приложением Golang - дополнительная информация

Windows 10 Pro, 64-разрядная версия Insider Edition, сборка 16184

Обратите внимание, что, хотя заголовок вопроса почти идентичен предыдущему вопросу, его чтение покажет, что содержание теперь существенно переработано. Это было по совету @Адам. Его слова:

It seems you're accidentally including your source code as static files and 
serving them. I'd advise posting a new question showing your app's directory 
structure and current app.yaml. Please don't edit this question as a new 
question, as it's not good Stack Overflow etiquette :) 

Здравствуйте, я репостю этот вопрос по совету Адама, который, кажется, является опытным пользователем SF и знает, о чем он говорит!

У меня следующая структура папок:

/
+ index.html
+ go.html
+ vim.html
+ git.html
+- css
|   + main.css
+- img
|   + forestbridge.jpg
+- main.go

Мой main.go просто содержит следующее:

package main

import (
    "net/http"
)

func init() {
    http.Handle("/", http.FileServer(http.Dir(".")))
}

Мой app.yaml содержит следующее:

runtime: go 
api_version: go1 
handlers: 
- url: /.* 
script: _go_app

Сайт работает в том смысле, что он обслуживает файлы, а также веб-контент, он также может обслуживать main.go и app.yaml что является очевидной дырой в безопасности.

Мне кажется, что очевидным виновником такого поведения является http.FileServer(http.Dir(".")) строка в источнике, которая обслуживает все и вся. Как это исправить?

Другой проблемой, хотя и второстепенной, является тот факт, что я привязал себя к негибкому способу выполнения вещей, что означает, что мне придется пожертвовать совместимостью с Golang 1.8, если мой код когда-либо станет настолько продвинутым. Как бы мне изменить вещи, чтобы использовать env: flex подходить?