Я получаю следующую ошибку:
analytics.min.js:9 Refused to load the script 'https://cdn.amplitude.com/libs/amplitude-5.2.2-min.gz.js' because it violates the following Content Security Policy directive: "script-src 'self'
https://apis.google.com
https://cdnjs.cloudflare.com
https://cdn.segment.com
https://ajax.googleapis.com
https://*.woopra.com
[...]
http://www.luckyorange.com https://ssl.luckyorange.com https://d10lpsik1i8c69.cloudfront.net". Note that 'script-src-elem' was not explicitly set, so 'script-src' is used as a fallback.
в моем сбое . Это моя первая попытка подключения к базе данных MongoDB
. После некоторого исследования этой ошибки, я думаю, что наконец-то начинаю понимать, что такое политика безопасности контента и как она предотвращает XSS,но у меня все еще были проблемы с тем, как реализовать включение сайта в мой проект.
Из статьи MDN Я нашел синтаксис для реализации этого: Content-Security-Policy: <policy-directive>; <policy-directive>
, но не был уверен, к чему это относится, в какой файл его поместить.
Iпроделал еще несколько копаний и нашел html-реализацию в этой статье stackoverflow .
После некоторого возни с этим и устранения другой ошибки, связанной с пропуском атрибута samesite
, я наконец-то дошел до строки, которая, по моему мнению, должна работать: <meta http-equiv="Content-Security-Policy" content="default-src 'https://cdn.amplitude.com/libs/' 'unsafe-inline'" samesite="none">
;однако это не так.
index.html
:
<!DOCTYPE html>
<html>
<head>
<title>Welcome to HyperDev!</title>
<meta name="" content="A cool thing made with HyperDev">
<link rel="shortcut icon" href="https://cdn.hyperdev.com/us-east-1%3A52a203ff-088b-420f-81be-45bf559d01b1%2Ffavicon.ico" type="image/x-icon"/>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Security-Policy" content="default-src 'https://cdn.amplitude.com/libs/' 'unsafe-inline'" samesite="none">
<style>
body {
background-color: #ddd;
color: #333;
font-family: sans-serif;
text-align: center;
}
</style>
</head>
</html>
package.json
:
{
"name": "fcc-mongo-mongoose-challenges",
"version": "0.0.1",
"description": "A boilerplate project",
"main": "server.js",
"scripts": {
"start": "node server.js"
},
"dependencies": {
"express": "^4.16.4",
"body-parser": "^1.19.0",
"mongoose": "^5.7.4",
"mongodb": "^3.3.2"
},
"engines": {
"node": "4.4.5"
},
"repository": {
"type": "git",
"url": "https://hyperdev.com/#!/project/welcome-project"
}
}
myApp.js
:
const mongoose = require('mongoose');
mongoose.connect(process.env.MONGO_URI, {useNewUrlParser: true, useUnifiedTopology: true})
.catch(e=>console.log(e));
Не проходит этот тест на freecodecamp. Скорее всего, из-за ошибки, указанной выше, база данных не подключается.