Выпадающий список от bootstrap4 не работает - PullRequest
0 голосов
/ 20 января 2019

Я работаю над Rails и bootstrap4.Я создал раскрывающееся меню на панели навигации с помощью начальной загрузки, но он не работает.

Поэтому я проверил проверку и заметил, что в Chrome появилось сообщение об ошибке.

"Отказался загружать скрипт"потому что он нарушает следующую директиву Content Security Policy: «script-src https:». Обратите внимание, что «script-src-elem» не был задан явно, поэтому «script-src» используется как запасной вариант. "

Кажется, у моих кодов нет проблем.

_header.html.erb

<nav class="navbar bg-dark navbar-dark">
  <a class="navbar-brand" href="/">
    <%= ApplicationHelper::APP_NAME %>
  </a>
  <% if user_signed_in? %>
    <ul class="navbar-nav">
      <li class="nav-item dropdown">
        <%= link_to("#", id: "navbarDropdownMenuLink", class: "nav-link dropdown-toggle", "data-toggle": "dropdown", "data-flip": "true", "aria-haspopup": "false", "aria-expanded": "false") do %>
          <%= image_tag current_user.avatar.url, class: "rounded-circle", style: "width: 50px;" %>
        <% end %>

        <div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdownMenuLink" style="position: absolute;right: 0;left: auto;">
          <%= link_to "Edit your profile", edit_user_registration_path, class: "dropdown-item" %>
          <%= link_to "Logout", destroy_user_session_path, method: :delete, class: "dropdown-item" %>
        </div>
      </li>
    </ul>
  <% end %>
</nav>

application.scss

@import 'bootstrap';

application.js

//= require jquery
//= require popper
//= require tether
//= require jquery_ujs
//= require bootstrap
//= require turbolinks
//= require_tree .

Я ожидал, что это связано с приведенным ниже сообщением.

"Отказался загружать скрипт", поскольку он нарушает следующую директиву политики безопасности контента: "script-src https:". Обратите внимание, что "script-src-elem 'не был задан явно, поэтому «script-src» используется как запасной вариант. "

Поэтому я гуглил и вставляю строку ниже в application.html.erb.

<meta http-equiv="Content-Security-Policy" content="script-src 'self'; child-src 'none'; object-src 'none'">

Но раскрывающийся список все еще не работает, и это сообщение также все еще отображается.

Я хотел бы знать, как решить эту проблему и что означает это сообщение.

1 Ответ

0 голосов
/ 20 января 2019

Я не уверен, действительно ли ваша проблема связана с CSP, но в любом случае это всегда хорошая идея, чтобы установить ее.Обратите внимание, что настройка CSP с помощью мета-тега менее безопасна, и поэтому рекомендуется вместо этого использовать соответствующие заголовки HTTP.

Rails уже включает (недокументированное) промежуточное ПО для их генерации.

Поскольку похоже, что вы используете скрипты из вашего Rails-приложения, я бы предположил, что добавление script-src 'self' действительно поможет.Поскольку это не так: вы случайно загружаете файлы JS из внешних источников?Особенно популярны CDN, размещенные у поставщиков.Попробуйте проверить вкладку сетевых запросов вашего браузера, чтобы выяснить, выполняет ли она какие-либо запросы к внешним источникам.

Если это так, вам нужно добавить их в CSP.Поначалу правильно понять все аспекты CSP может быть немного сложно, но как только вы лучше познакомитесь с ним, это может быть полезным инструментом для защиты вашего приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...