#reactjs #api #github-pages
#reactjs #API #github-страницы
Вопрос:
Я перенес свой одностраничный проект React на страницы github. Хотя страница отображается, она работает некорректно. Это базовое приложение, в котором пользователи выполняют поиск через API, а затем, когда они нажимают на фильм, он добавляется в их список наблюдения. Однако, когда я ввожу свой запрос через поиск, ничего не происходит, в отличие от локального хоста, на котором отображаются фильмы, и все работает правильно.
Когда я проверяю его через консоль, я получаю следующую ошибку: страница » была загружена по протоколу HTTPS, но запросила небезопасный ресурс «. Этот запрос заблокирован; содержимое должно передаваться по протоколу HTTPS.
Вот мой package.json
{
"name": "watchlater",
"homepage": "https://myusername.github.io/watchlater/",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^5.11.4",
"@testing-library/react": "^11.1.0",
"@testing-library/user-event": "^12.1.10",
"bootstrap": "^4.5.3",
"gh-pages": "^3.1.0",
"react": "^17.0.1",
"react-dom": "^17.0.1",
"react-scripts": "4.0.0",
"web-vitals": "^0.2.4"
},
"scripts": {
"predeploy": "npm run build",
"deploy": "gh-pages -d build",
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
Есть ли что-то еще, что мне нужно изменить? Я следовал инструкциям здесь (https://create-react-app.dev/docs/deployment ) опубликовать его на gh-страницах, но фактическая функциональность не работает.
Комментарии:
1. Вы использовали http вместо https для каких-либо ресурсов?
2. Используйте вкладку Безопасность в инструментах разработчика. Должно показать вам, какой именно ресурс небезопасен.
Ответ №1:
эта ошибка называется «смешанный контент», к которому вы пытаетесь получить доступ через «HTTP» на сайте «HTTPS», потому что он уязвим для хакерских атак с подслушиванием, и это является нарушением.
Ответ №2:
Оказывается, у моего вызова API был HTTP вместо HTTPS. Я изменил его на HTTPS, и теперь он работает.