域名安全加密

目录结构

主目录simple

  1. —— main.go

代码示例

main.go

  1. package main
  2. import (
  3. "github.com/kataras/iris"
  4. "github.com/iris-contrib/middleware/secure"
  5. )
  6. func main() {
  7. s := secure.New(secure.Options{
  8. // AllowedHosts是允许的完全限定域名列表。默认为空列表,允许任何和所有主机名。
  9. AllowedHosts: []string{"ssl.example.com"},
  10. //如果SSLRedirect设置为true,则仅允许HTTPS请求。默认值为false。
  11. SSLRedirect: true,
  12. //如果SSLTemporaryRedirect为true,则在重定向时将使用a 302。默认值为false(301)。
  13. SSLTemporaryRedirect: false,
  14. // SSLHost是用于将HTTP请求重定向到HTTPS的主机名。默认值为“”,表示使用相同的主机。
  15. SSLHost: "ssl.example.com",
  16. // SSLProxyHeaders是一组标题键,其关联值表示有效的HTTPS请求。在使用Nginx时很有用:`map[string]string{"X-Forwarded-Proto”:“https"}`。默认为空白map。
  17. SSLProxyHeaders: map[string]string{"X-Forwarded-Proto": "https"},
  18. // STSSeconds是Strict-Transport-Security标头的max-age。默认值为0,不包括header。
  19. STSSeconds: 315360000,
  20. //如果STSIncludeSubdomains设置为true,则`includeSubdomains`将附加到Strict-Transport-Security标头。默认值为false。
  21. STSIncludeSubdomains: true,
  22. //如果STSPreload设置为true,则`preload`标志将附加到Strict-Transport-Security标头。默认值为false。
  23. STSPreload: true,
  24. //仅当连接是HTTPS时才包含STS标头。如果要强制始终添加,请设置为true."IsDevelopment"仍然覆盖了这一点。默认值为false。
  25. ForceSTSHeader: false,
  26. //如果FrameDeny设置为true,则添加值为"DENY"的X-Frame-Options标头。默认值为false。
  27. FrameDeny: true,
  28. // CustomFrameOptionsValue允许使用自定义值设置X-Frame-Options标头值。这会覆盖FrameDeny选项。
  29. CustomFrameOptionsValue: "SAMEORIGIN",
  30. //如果ContentTypeNosniff为true,则使用值nosniff添加X-Content-Type-Options标头。默认值为false。
  31. ContentTypeNosniff: true,
  32. //如果BrowserXssFilter为true,则添加值为1的X-XSS-Protection标头;模式= block`。默认值为false。
  33. BrowserXSSFilter: true,
  34. // ContentSecurityPolicy允许使用自定义值设置Content-Security-Policy标头值。默认为""。
  35. ContentSecurityPolicy: "default-src 'self'",
  36. // PublicKey实现HPKP以防止伪造证书的MITM攻击。默认为""。
  37. PublicKey: `pin-sha256="base64+primary=="; pin-sha256="base64+backup=="; max-age=5184000; includeSubdomains; report-uri="https://www.example.com/hpkp-report"`,
  38. //这将导致在开发期间忽略AllowedHosts,SSLRedirect和STSSeconds/STSIncludeSubdomains选项。 部署到生产时,请务必将其设置为false。
  39. IsDevelopment: true,
  40. })
  41. app := iris.New()
  42. app.Use(s.Serve)
  43. app.Get("/home", func(ctx iris.Context) {
  44. ctx.Writef("Hello from /home")
  45. })
  46. app.Run(iris.Addr(":8080"))
  47. }