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

问题描述 投票:0回答:5

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

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

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

html google-chrome http referrer
5个回答
12
投票

我通过将

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


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

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


1
投票

首先使用formspree指定的属性:

<form action="https://formspree.io/[email protected]"
      method="POST">
    <input type="text" name="name">
    <input type="email" name="_replyto">
    <input type="submit" value="Send">
</form>

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

希望它对你有用...


0
投票

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


0
投票

从 2020 年开始,如果链接或请求来自 HTTPS -> HTTP(或文件 -> HTTPS),默认情况下“根本”不发送 Referer,如果是 HTTPS -> HTTPS,则仅发送源但不同的网站。

链接也可以指定

rel=noreferrer
来单独禁用它。

您可以使用 HTTP 标头或元标记对其进行调整。

参考:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy#integration_with_html

© www.soinside.com 2019 - 2024. All rights reserved.