Asp.net core net内核中的CORS问题

Asp.net core net内核中的CORS问题,asp.net-core,content-security-policy,Asp.net Core,Content Security Policy,在我的一个项目中,csp被定义为 var csp = "default-src 'self'; object-src 'none'; frame-ancestors 'none'; sandbox allow-forms allow-same-origin allow-scripts; base-uri 'self';"; if (!context.HttpContext.Response.Headers.ContainsKey("Content-Security

在我的一个项目中,csp被定义为

var csp = "default-src 'self'; object-src 'none'; frame-ancestors 'none'; sandbox allow-forms allow-same-origin allow-scripts; base-uri 'self';";

if (!context.HttpContext.Response.Headers.ContainsKey("Content-Security-Policy"))
{
    context.HttpContext.Response.Headers.Add("Content-Security-Policy", csp);
}
问题是我的内部JS不工作。我已经包括了淘汰JS,我在那里得到了一个错误

拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“default src‘self’”。启用内联执行需要'unsafe inline'关键字、哈希('sha256-SyLtUpmx0OjAxbTKXy2jd0BL8QnTwNgkVdWgf9/eQio=')或nonce('nonce-…')。还请注意,没有显式设置“script src”,因此使用“default src”作为回退

未捕获的EvalError:无法分析绑定。 绑定值:if:sessionType() 消息:拒绝将字符串作为JavaScript求值,因为“unsafe eval”不是以下内容安全策略指令中允许的脚本源:“default src‘self’”

正在此行中获取此错误

<script type="text/javascript">
    var returnUrl = '@Model.ReturnUrl';
    $(function () {
        $(":input").inputmask();
    });
</script>

var returnUrl='@Model.returnUrl';
$(函数(){
$(“:input”).inputmask();
});
..
是一个内联脚本,因此出现错误:

拒绝执行内联脚本,因为它违反以下条件 内容安全策略指令:“默认src‘self’”。要么 “不安全内联”关键字,哈希 ('sha256-SyLtUpmx0OjAxbTKXy2jd0BL8QnTwNgkVdWgf9/eQio=')或一个nonce 启用内联执行需要('nonce-…')

您有3个选项允许内联脚本:

  • 'insafe-inline'
    令牌添加到
    默认src
    指令中(这严重降低了CSP保护)
  • 'sha256-SyLtUpmx0OjAxbTKXy2jd0BL8QnTwNgkVdWgf9/eQio='
    标记添加到
    默认src
    指令中(尽管最好添加
    脚本src'self''sha256-SyLtUpmx0OjAxbTKXy2jd0BL8QnTwNgkVdWgf9/eQio='
    )。负面时刻:更改脚本内容时,必须重新生成一个
    'hash-value'
  • 'nonce-value'
    添加到
    默认src
    脚本src
    中。Nonce值应该在每个页面加载时新生成,因此最好使用

    错误:
拒绝将字符串作为JavaScript求值,因为在以下内容安全策略指令中,“unsafe eval”不是允许的脚本源:“default src‘self’”

表示您已使用
eval()
new Function()
setTimeout()
/
setInterval()
函数调用。
eval()
/
new Function()
的情况下,除了将
'safe-eval'
令牌添加到
默认src
(或者
脚本src
中,如果添加它)。
setTimeout()
/
setInterval()
的情况下-只有当获取函数作为字符串参数时,这些表达式才算作不安全的求值表达式。您可以使用匿名(或命名)函数来避免使用
'safe-eval'