diff --git a/app/goplay/edit.go b/app/goplay/edit.go
index d2a423e..d0fb6e1 100644
--- a/app/goplay/edit.go
+++ b/app/goplay/edit.go
@@ -23,17 +23,22 @@
 
 type editData struct {
 	Snippet *Snippet
+	Share   bool
 }
 
 func edit(w http.ResponseWriter, r *http.Request) {
 	// Redirect foo.play.golang.org to play.golang.org.
 	if strings.HasSuffix(r.Host, "."+hostname) {
-		http.Redirect(w, r, "http://"+hostname, http.StatusFound)
+		http.Redirect(w, r, "https://"+hostname, http.StatusFound)
 		return
 	}
 
 	snip := &Snippet{Body: []byte(hello)}
 	if strings.HasPrefix(r.URL.Path, "/p/") {
+		if !allowShare(r) {
+			http.Error(w, "Forbidden", http.StatusForbidden)
+			return
+		}
 		c := appengine.NewContext(r)
 		id := r.URL.Path[3:]
 		serveText := false
@@ -56,7 +61,7 @@
 			return
 		}
 	}
-	editTemplate.Execute(w, &editData{snip})
+	editTemplate.Execute(w, &editData{snip, allowShare(r)})
 }
 
 const hello = `package main
diff --git a/app/goplay/edit.html b/app/goplay/edit.html
index 277a6ee..e939e1a 100644
--- a/app/goplay/edit.html
+++ b/app/goplay/edit.html
@@ -15,13 +15,17 @@
 				'runEl':        '#run',
 				'fmtEl':        '#fmt',
 				'fmtImportEl':  '#imports',
+				{{if $.Share}}
 				'shareEl':      '#share',
 				'shareURLEl':   '#shareURL',
+				{{end}}
 				'enableHistory': true
 			});
 			playgroundEmbed({
 				'codeEl':       '#code',
+				{{if $.Share}}
 				'shareEl':      '#share',
+				{{end}}
 				'embedEl':      '#embed',
 				'embedLabelEl': '#embedLabel',
 				'embedHTMLEl':  '#shareURL'
@@ -88,13 +92,14 @@
 						Imports
 					</label>
 				</div>
+				{{if $.Share}}
 				<input type="button" value="Share" id="share">
 				<input type="text" id="shareURL">
-
 				<label id="embedLabel">
 					<input type="checkbox" id="embed">
 					embed
 				</label>
+				{{end}}
 			</div>
 			<div id="aboutControls">
 				<input type="button" value="About" id="aboutButton">
diff --git a/app/goplay/share.go b/app/goplay/share.go
index cbdb7bf..cce9e2a 100644
--- a/app/goplay/share.go
+++ b/app/goplay/share.go
@@ -39,7 +39,7 @@
 }
 
 func share(w http.ResponseWriter, r *http.Request) {
-	if r.Method != "POST" {
+	if !allowShare(r) || r.Method != "POST" {
 		http.Error(w, "Forbidden", http.StatusForbidden)
 		return
 	}
@@ -70,3 +70,14 @@
 
 	fmt.Fprint(w, id)
 }
+
+func allowShare(r *http.Request) bool {
+	if appengine.IsDevAppServer() {
+		return true
+	}
+	switch r.Header.Get("X-AppEngine-Country") {
+	case "", "ZZ", "HK", "CN", "RC":
+		return false
+	}
+	return true
+}
