• C#MVC配置CSP策略时引入jquery.unobtrusive-ajax.js报错,如何解决?(相关搜索:构造函数)


    关注 码龄 粉丝数 原力等级 -- 被采纳 被点赞 采纳率 浪味儿仙 2024-03-28 09:54 采纳率: 20% 浏览 4 首页/ 编程语言 / C#MVC配置CSP策略时引入jquery.unobtrusive-ajax.js报错,如何解决?(相关搜索:构造函数) javascriptc#前端 近日接手了一个C#MVC5 , 使用的.net framework4.5.2框架的Web项目, 在AppScan扫描时发现Content-Security-Policy缺失, 通过上网查找, 将CSP策略配置为: default-src 'self' ;style-src 'self' 'unsafe-hashes' 'sha256-xxx' ;script-src 'strict-dynamic' 'nonce-xxx'; object-src 'self';frame-ancestors 'self';" 将项目的内联样式都转换为外联css并引入, 原视图中的script也标记了nonce值, 引用外部js, 以下是某一个视图代码: ...... table> XXX .... @foreach (var item in Model) { .... 移除 } } 在点击移除时, 报错如下:点进去 , 构造函数时报错因AppScan报告unsafe-inline 和 unsafe-eval不安全, 项目不改不行 , 但我刚刚接触C#开发,前端知识不了解,网上资料也没搜到合适, 还恳请各位友人帮忙解惑 , 感激不尽!另, 在引入日期 WdatePicker.js时, 会报错, 但引入js时, 赋予了nonce值,这种错误是什么原因呢? Refused to execute inline event handler because it violates the following Content Security Policy directive: "script-src 'strict-dynamic' 'nonce-XXX'". Either the 'unsafe-inline' keyword, a hash ('sha256-...'), or a nonce ('nonce-...') is required to enable inline execution. Note that hashes do not apply to event handlers, style attributes and javascript: navigations unless the 'unsafe-hashes' keyword is present. 展开全部 收起 写回答 好问题 0 提建议 追加酬金 关注问题 微信扫一扫 点击复制链接 分享 邀请回答 编辑 收藏 删除 结题 收藏 举报 追加酬金 (90%的用户在追加酬金后获得了解决方案) 当前问题酬金 ¥ 0 (可追加 ¥500) ¥ 15¥ 20¥ 50¥ 100¥ 200 支付方式 扫码支付 二维码出错 点击刷新 支付金额 15 元 提供问题酬金的用户不参与问题酬金结算和分配 支付即为同意 《付费问题酬金结算规则》 结题 再想想 删除 再等等

    2条回答 默认 最新

    • 专家-皆知 2024-03-28 09:54
      关注

      问题: C#MVC配置CSP策略时引入jquery.unobtrusive-ajax.js报错,如何解决?(相关搜索:构造函数)

      内容: 近日接手了一个C#MVC5 , 使用的.net framework4.5.2框架的Web项目, 在AppScan扫描时发现Content-Security-Policy缺失, 通过上网查找, 将CSP

      还在写,少侠莫要着急。若当前问题已然得解,且请采纳。若未解,请稍后查阅,若仍未解,请回复于我。

      评论
    • Kwan的解忧杂货铺 Java领域优质创作者 2024-03-28 09:55
      关注

      浪味儿仙 上午好☀️☀️☀️️
      本答案参考ChatGPT-3.5

      根据问题描述,你在使用C# MVC配置CSP策略时引入了jquery.unobtrusive-ajax.js,并且遇到了报错的问题。以下是解决问题的步骤和建议:

      1. 错误1:Refused to execute inline event handler because it violates the following Content Security Policy directive: "script-src 'strict-dynamic' 'nonce-XXX'". 这个错误提示是因为CSP策略限制了内联脚本的执行。解决方法是将内联脚本转移到外部文件,并通过的方式引入。

        修改前的代码:

        
        

        修改后的代码:

        
        
        
        

        上述代码将原来的内联事件处理程序移到外部脚本文件WdatePicker.js中,并通过$().focus()方法绑定事件。

      2. 错误2:Uncaught EvalError: Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive: "script-src 'strict-dynamic' 'nonce-..."

        这个错误是因为jquery.unobtrusive-ajax.js中使用了eval()函数,而CSP策略限制了'unsafe-eval'

        解决方法是将jquery.unobtrusive-ajax.js中的eval()函数修改为使用其他方式来执行代码。幸运的是,jquery.unobtrusive-ajax.js可以通过配置进行修改,以避免使用eval()函数。

        修改方式:

        • 首先,将jquery.unobtrusive-ajax.js复制到你的项目中,并更名为jquery.unobtrusive-ajax-mod.js(或其他适合的名称)。
        • 打开jquery.unobtrusive-ajax-mod.js文件,并进行以下修改:
          • 将所有的eval()替换为Function()
          • 在文件开头增加一行注释:/* CSP Fix: Removed eval() in order to comply with Content Security Policy */
        • 修改视图代码,将引用的文件名改为jquery.unobtrusive-ajax-mod.js

        修改后的代码:

        
        

        注意:上述修改是根据假设jquery.unobtrusive-ajax.js中使用了eval()函数来解决问题的,如果不是eval()函数导致的问题,可能需要进一步分析错误信息来确定具体解决方法。

      以上是解决问题的步骤和建议,希望能帮助到你。如果还有其他问题,请随时提问。

      展开全部

      评论
    编辑
    预览

    报告相同问题?

  • 相关阅读:
    Linux进阶-文件
    线程池有几种创建方式?
    SpringBoot自动装配原理
    转录组分析小故事丨什么是RNAseq?
    MySQL事务:特性、使用、并发事务问题和隔离级别
    七、golang基础之interface与类型断言
    MFC CList<CRect, CRect&> m_listRect;的用法
    WinRT: 可能是 Windows 上最好用的 Native ABI 和远程调用方案
    猿创征文 | 简单入门linux【四】任务调度和进程管理
    springboot post添加URL添加参数
  • 原文地址:https://ask.csdn.net/questions/8080194