我有一个HTML页面,代码如下。
<form method="POST" action="https://formspree.io/email"> <input type="submit" value="SEND"/> </form>
当用户提交表单时,我的浏览器在http请求中不包含发送器头字段。为什么不呢?
nfeuvbwi1#
我通过将<meta name="referrer" content="origin">添加到HTML页面的<head>部分来解决这个问题。
<meta name="referrer" content="origin">
<head>
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/。
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网站中重置它,然后直接在你的网站中尝试,所以你必须再次确认。
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
strict-origin-when-cross-origin
rel=noreferrer
4条答案
按热度按时间nfeuvbwi1#
我通过将
<meta name="referrer" content="origin">
添加到HTML页面的<head>
部分来解决这个问题。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/。
ckocjqey3#
首先使用formspree指定的属性:
第二:也许你之前在另一个网站(如formspree网站)尝试过这个表单,所以你必须在formspree网站中重置它,然后直接在你的网站中尝试,所以你必须再次确认。
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