Chrome 为什么我的浏览器不发送任何推荐?

zz2j4svz  于 2023-09-28  发布在  Go
关注(0)|答案(4)|浏览(151)

我有一个HTML页面,代码如下。

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

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

nfeuvbwi

nfeuvbwi1#

我通过将<meta name="referrer" content="origin">添加到HTML页面的<head>部分来解决这个问题。

kxe2p93d

kxe2p93d2#

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

ckocjqey

ckocjqey3#

首先使用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网站中重置它,然后直接在你的网站中尝试,所以你必须再次确认。

wgx48brx

wgx48brx4#

从2020年开始,默认值是strict-origin-when-cross-origin,如果链接或请求来自HTTPS -> HTTP(或文件-> HTTPS),则不会发送Referer“根本”,如果是HTTPS -> HTTPS但不同的站点,则只发送源。
链接也可以指定rel=noreferrer来单独禁用它。
您可以使用HTTP头或Meta标记对其进行调整。
参考:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy#integration_with_html

相关问题