#javascript #reactjs #react-router
#javascript #reactjs #реагирующий маршрутизатор
Вопрос:
Я создал веб-сайт с использованием react. Изображения веб-страниц доступны с помощью URL, например — http://localhost:3000/1.jpg
Я хочу защитить и не отображать эти изображения внутри общедоступной папки, я попробовал приведенный ниже код, он не работает, если я указываю расширение точки имени изображения в URL, оно работает, если это изображение имени отсутствует в общедоступной папке
import React, { Component } from "react";
import { BrowserRouter, Route, Switch } from "react-router-dom";
import App from "../App";
import PageNotFound from "../components/PageNotFound/PageNotFound";
class Router extends Component {
render() {
return (
<BrowserRouter>
<Switch>
<Route exact path="/" component={App} />
<Route path="*" component={PageNotFound} />
</Switch>
</BrowserRouter>
);
}
}
export default Router;
Комментарии:
1. Можете ли вы уточнить? Вы не хотите, чтобы пользователи видели изображения в вашем
public
каталоге? Как они должны видеть изображения вместо этого? И если они вообще не должны их видеть, почему они в вашемpublic
каталоге2. Я не хочу, чтобы пользователи видели изображения в общедоступном каталоге, к изображениям можно получить доступ по URL, чего я хочу избежать.
3. Может быть, я не понимаю, но как браузер пользователя должен загружать изображения, если вы не хотите, чтобы они были доступны?
4. Да, вы правы, я думал, что будет какой-то способ не позволить пользователю видеть это изображение с помощью url.
5. Вы можете использовать
.htaccess
для предотвращения прямого доступа к изображениям из общей папки
Ответ №1:
Предлагается поместить изображения в папку public/images
(обычно по соглашению), а затем сделать что-то вроде этого
import React, { Component } from "react";
import { BrowserRouter, Route, Switch } from "react-router-dom";
import App from "../App";
import PageNotFound from "../components/PageNotFound/PageNotFound";
class Router extends Component {
render() {
return (
<BrowserRouter>
<Switch>
<Route exact path="/" component={App} />
<Route path="*" component={PageNotFound} />
<Route path="/images/public/*" component={PageNotFound} />
</Switch>
</BrowserRouter>
);
}
}
export default Router;