为什么我的浏览器不发送任何引荐来源网址?

Why is my browser not sending any referrer?

我有一个包含以下代码的 html 页面。

  <form method="POST" action="https://formspree.io/email">
    <input type="submit" value="SEND"/>
  </form>

当用户提交表单时,我的浏览器不在 http 请求中包含引用 header 字段。为什么不呢?

首先使用formpree指定的属性:

<form action="https://formspree.io/your@email.com"
      method="POST">
    <input type="text" name="name">
    <input type="email" name="_replyto">
    <input type="submit" value="Send">
</form>

其次:也许您之前在另一个站点(例如formspree站点)中尝试过该表单,因此您必须在formspree站点中重置它,然后直接在您的站点中尝试,因此您必须确认再次.

希望对你有用...

正如 statosdotcom 评论的那样,问题的发生是因为我在本地打开我的网页。

我通过将 <meta name="referrer" content="origin"> 添加到 HTML 页面的 <head> 部分来修复此问题。

  1. 您正在通过在浏览器中将网站作为计算机文件系统中的静态 HTML 文件打开来测试您的网站。在这种情况下,它的 URL 不会以 http:// 或 https:// 开头。这是行不通的,因为浏览器不会将这些页面视为普通的 Web 资源,因此当您提交表单时它们不会自动发送 "Referer" header。 Formspree 需要 header 才能工作。如果您只是从本地 Web 服务器将 HTML 文件作为 Web 资源打开,就可以解决这个问题。如果您使用 Mac 或 Linux,只需键入 python -m SimpleHTTPServer 8000 或您的 HTML 文件目录,然后在浏览器上访问 http://localhost:8000。如果您使用的是 Windows,请尝试安装以下超级简单的网络服务器之一:Chrome、thttpd 或 Quickshare 的网络服务器。

  2. 您使用的是旧版 Safari、Safari 移动版或其他非最新版 Chrome、Firefox 或 Edge 的浏览器。在这种情况下,您可能是我们在 Formspree 上的旧 HSTS 政策的受害者,该政策不允许网站 post 内容到 non-https 版本的 Formspree。在这种情况下,请将表单的 action= 属性更改为 https://formspree.io/.