我有一台服务器,它为同一主机名上的多个用户托管资源。例如:
我想允许用户为其目录中的资源指定自己的响应头,类似于在AWS S3上执行的操作。例如,Carol可能希望她的TODO列表可以从另一个域的脚本中读取,因此她可能希望Access-Control-Allow-Origin: *
设置为todo.txt
。
虽然我希望此功能尽可能灵活,但我不能仅允许指定任何响应头,因为某些响应头对整个源或主机名都有副作用。例如,Set-Cookie
可以用于一个人的目录,但是用户代理可以使用cookie值向其他人的目录发出请求。另一个例子是,用户可以设置Strict-Transport-Security
,可能会阻止其他用户使用普通的HTTP。
哪些其他HTTP响应标头可能会对整个原点产生副作用,而不仅仅是请求的资源?到目前为止我的清单:
答案 0 :(得分:1)
我不建议阻止可能影响整个域的响应头,而是建议采用稍微不同的方法,并指定一个肯定可以使用的响应头的白名单。可能存在非标准的新的,实验性的或特定于浏览器的标头,但可能会影响具有特定浏览器的用户的整个域。
我建议以下标题可以安全使用,并且应该是您的用户需要修改的所有内容:
对于文件和html页面等静态内容,我不会手动设置Content-Range或Content-Length。服务器应自动设置许多这些标头。然而,覆盖它们可能对某些用户有意义。如果您的服务器支持,则Transfer-Encoding可用于在传输过程中添加gzip
或deflate
,但不得与HTTP / 2一起使用。
同样位置,允许和重试 - 仅对某些状态代码有意义。你可能想省略它们