日历javascript通话无效

时间:2018-01-15 00:26:57

标签: javascript fullcalendar content-security-policy

修改

我已经尝试过以下建议但他们仍然无法工作。我得到的错误是:

“拒绝执行内联脚本,因为它违反了以下内容安全策略指令:”default-src'self'数据:gap:https://ssl.gstatic.com'unsafe-eval'“。'unsafe-inline'关键字,哈希('sha256-egiF + Vb0Vz6d / Eu2SO2D + 0PSd3mbX / UWP8Bx7aqvuZQ =')或nonce('nonce -...')是启用内联执行所必需的。另请注意'script-src'未明确表示设置,所以'default-src'用作后备。“

任何人都可以阐明这个含义吗?

我确信有一个简单的答案,如果有人能告诉我我做错了什么,我会非常感激。我试图在空白页面中调用基本日历。然而,什么也没发生。我已经验证了我知道要做的所有事情,但仍然没有出现。

<!DOCTYPE html>
<html>
    <head>
        <!--
        Customize this policy to fit your own app's needs. For more guidance, see:
            https://github.com/apache/cordova-plugin-whitelist/blob/master/README.md#content-security-policy
        Some notes:
            * gap: is required only on iOS (when using UIWebView) and is needed for JS->native communication
            * https://ssl.gstatic.com is required only on Android and is needed for TalkBack to function properly
            * Disables use of inline scripts in order to mitigate risk of XSS vulnerabilities. To change this:
                * Enable inline JS: add 'unsafe-inline' to default-src
        -->
        <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; img-src 'self' data: content:;">
        <meta name="format-detection" content="telephone=no">
        <meta name="msapplication-tap-highlight" content="no">
        <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">
        <link rel="stylesheet" type="text/css" href="css/index.css">
        <title>Hello World</title>
        <link rel="stylesheet" href="fullcalendar/fullcalendar.css" />
        <script src="lib/jquery.min.js"></script>
        <script src="lib/moment.min.js"></script>
        <script src="fullcalendar/fullcalendar.js"></script>
            <script>
        $(document).ready(function() {

    // page is now ready, initialize the calendar...

    $('#calendar').fullCalendar({
        // put your options and callbacks here
    })

});
    </script>
    </head>

    <body>
        <div id="calendar"></div>


        <script type="text/javascript" src="cordova.js"></script>
        <script type="text/javascript" src="js/index.js"></script>
    </body>
</html>

2 个答案:

答案 0 :(得分:0)

您的代码无法正常工作的原因有多种。由于信息不足,因此无法检查详细信息。以下是Remove-Variable $folder_and_prefix的工作示例。请关注它:

&#13;
&#13;
Full Calendar
&#13;
$(document).ready(function() {

  // page is now ready, initialize the calendar..
  $('#calendar').fullCalendar({
    weekends: false,
    dayClick: function() {
      alert('a day has been clicked!');
    },
    defaultView: 'agendaWeek'

  });

});
&#13;
&#13;
&#13;

答案 1 :(得分:0)

没有任何事情发生,因为内联脚本(即实际上是页面一部分的脚本,而不是从链接的.js文件加载的脚本)被内容安全策略禁用。这是错误消息告诉您的内容。

假设您想要允许它们(尽管存在XSS攻击的潜在理论风险),那么启用的线索就在您的代码中位于其上方的注释中:

  

禁用内联脚本以降低XSS漏洞的风险。要改变这个:

     
      
  • 启用内联JS:将'unsafe-inline'添加到default-src
  •   

因此,只需修改标记的default-src部分即可包含该指令。改变它:

default-src 'self' 

default-src 'self' 'unsafe-inline'

如果您不想这样做,那么另一种方法是将Javascript从您的页面移动到单独的.js文件,然后使用<script src=...类型的标记提供指向它的链接。

请注意,这些都与fullCalendar没有任何直接关系,它完全与安全策略有关,后者控制允许页面使用的脚本和资源。有关此主题的介绍,请参阅https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP