我最初在我的CSP头文件中有这个:default-src 'self';
,它将源限制在我的域中,但它没有提到方案/协议。从我可以收集的信息来看,如果页面本身通过http加载,这将允许通过http加载源代码。我正在使用HSTS和CDN重定向来尝试保持https上的所有流量,但我仍想覆盖此情况。 (实际上,我试图让this header checker给我所有的绿色滴答。)编辑:当使用'self'
时,srcclr会很乐意给所有的绿色滴答。我只需要修复一些错别字。我可以使用CSP将请求限制为https:AND'self'吗?
无论如何,我试图改变CSP指令是default-src https: 'self';
,但它似乎加入该计划允许从加载资源的任何域,只要它是通过https。即,如果任何规则(https或'self')匹配,则允许请求。我通过在Chrome开发工具中使用URL来测试这一点。
有没有一种方法来表示:
- 所有资源都应该被加载通过https; AND
- 资源应该只来自原始域?
类似default-src https://'self';
,但我不认为这是有效的,是吗?
一个解决方案是对域名进行硬编码,但如果可能的话,我想使用'self'
。
对,所以我想不可能说“来自'self''的域,但是这个特定的方案”。如果该页面是在http上提供的,那么按照定义,“self”指的是http。因此,将其解决到https和我自己的域的唯一方法是使用'https:// example.com'。 –
@CamJackson我不明白。你说带CSP的页面使用http?但你说你的域名使用HSTS。 (请注意,对于http-> https的301重定向不需要CSP。)如果您确实使用HSTS,则应该为所有http请求回答301以https,因为新浏览器会自动执行此操作 – Tom
不,我在说* **如果网页是通过http服务的,那么''self''也会指向http,所以唯一总是限制为https的方法,同时也仅限于我的域名,是硬编码'https :// example.com',而不是使用'self''。我认为这是如何运作的?但是,是的,我使用重定向和HSTS将页面加载限制为https,因此使用“self”是更简单和更好的解决方案。大多数情况下,我试图从srcclr获取所有绿色的蜱虫。 (我现在已经完成了,我只需要修复一些错别字) –