#javascript #node.js #reactjs
Вопрос:
Это проект react. Я использую multer на стороне сервера (это REST API), и я получаю файлы в postman , но в браузере это не работает, и я попробовал простой запрос get работает в postman, но не в браузере. У меня есть это в хроме :
Этот сайт не может быть доступен на веб-странице по адресу http://localhost:6000/images/ad.jpg возможно, он временно отключен или, возможно, навсегда переехал на новый веб-адрес.
Я получил это сообщение в fire fox
Этот адрес ограничен
Этот адрес использует сетевой порт, который обычно используется для целей, отличных от просмотра веб-страниц. Firefox отменил запрос на вашу защиту.
import express from "express" ;
import cors from "cors" ;
const app =express() ;
const __dirname = path.dirname(fileURLToPath(import.meta.url));
dotenv.config() ;
app.use(express.json({limit:"30mb",extended:true})) ;
app.use(express.urlencoded({limit:"30mb",extended:true})) ;
app.use(morgan("common")) ;
app.use(helmet()) ;
app.use("/api/user/",userRoute) ;
app.use("/api/auth/",userAuth) ;
app.use("/api/posts/",postRoute) ;
const storage =multer.diskStorage({
destination:(req,file,cb) =>{
cb(null,"public/images")
} ,
filename:(req,file,cb)=>{
cb (null,file.originalname)
}
})
const upload = multer({storage}) ;
app.post("/api/upload/",upload.single("file"), (req,res)=>{
try {
return res.status(200).json("file uploaded successfully")
} catch (error) {
console.log(error.message)
}
})
const ClusterURL=process.env.CLUSTER_URL ;
const PORT=process.env.PORT || 6000 ;
mongoose.connect(ClusterURL,{useNewUrlParser:true,useUnifiedTopology:true,useFindAndModify:false,useCreateIndex:true})
.then(()=>app.listen(PORT,()=>console.log(`Successfully connected to port ${PORT}`)))
.catch((error)=>{console.log(error.message)}) ;
app.use('/images' , express.static(path.join(__dirname, 'public/images')));
app.get("/bitch",(req,res)=>{
res.json("yo bitch") ;
}); ```
**i should get the images files in the browser in this address http://localhost:6000/images/ad.jpg**
Комментарии:
1. TLDR — ошибка в коде, который вы не опубликовали — когда он «работает в почтальоне» и не работает в браузере — обычно из — за CORS … или какой — либо другой ошибки кода на стороне клиента-вы показали код сервера, который явно работает, так как работает почтальон-теперь покажите код клиента, в котором существует проблема
Ответ №1:
6000
принадлежит к списку портов с ограниченным доступом.
Вы можете либо разрешить (что я бы не рекомендовал) этот порт на основе этого описания
Как разрешить ограниченный порт?
Вы можете создать настройки с помощью about:config и разрешить номер порта, который блокирует Firefox. Вот как:
(0) Выберите и скопируйте следующее имя предпочтения
сеть.безопасность.порты.запрещено.переопределение (1) На новой вкладке введите или вставьте about:config в адресную строку и нажмите Enter/Return. Нажмите на кнопку, обещая быть осторожным.
(2) В поле поиска над списком введите или вставьте порты и сделайте паузу, пока список фильтруется
Если существует вышеперечисленное предпочтение:
(3) Дважды щелкните его и добавьте запятую в конец списка, за которой следует номер порта, который вам нужно разрешить. Никаких пробелов. Затем нажмите кнопку ОК.
Если вышеперечисленных предпочтений не существует:
(4) щелкните правой кнопкой мыши в любом месте страницы и выберите Создать > Строка
(5) В диалоговом окне имя предпочтения вставьте имя, с которым вы справились, и нажмите кнопку ОК
(6) В диалоговом окне значение предпочтения введите номер порта, который вам нужно разрешить, затем нажмите кнопку ОК.
Или выберите другой порт
Комментарии:
1. спасибо , я только что решил проблему, Но почему некоторые порты ограничены ?