Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

130
Visualizações
La solicitud POST no carga el archivo en el servidor

He estado atascado con este problema durante 3 días. Estoy usando React.js en la interfaz con axios y quiero cargar el archivo en el servidor. Hay un punto final de la API que es un punto final posterior a este.

 POST- https://88.66.123.122:20000/b1s/v1/Attachments2

Este punto final básicamente carga los archivos en el sistema de archivos del servidor con la respuesta exitosa que tiene el estado 201 . La respuesta está bien cuando pruebo el punto final con el cliente de escritorio Postman y el fragmento de código generado por esta herramienta es este.

Fragmento de cartero

Pero quiero lograr esto en la interfaz de usuario del navegador. Así que estoy usando React.js para esto.

Este punto final también necesita una cookie de autorización en el encabezado de la solicitud para asegurarse de que el usuario esté autenticado. Entonces, en la interfaz de usuario, creé un botón de inicio de sesión que básicamente envía una solicitud de publicación con credenciales codificadas al punto final de login de sesión y me da una respuesta exitosa con una identificación de sesión.

Estoy guardando la identificación de la sesión en el navegador como una cookie para el archivo de carga, pero cuando envío la cookie con la solicitud, obtengo la siguiente respuesta en el navegador

 Refused to set unsafe header "Cookie"

y la respuesta que recibo con el siguiente JSON.

 POST https://88.66.123.122:20000/b1s/v1/Attachments2 [401 (Unauthorized)] { "error" : { "code" : 301, "message" : { "lang" : "en-us", "value" : "Invalid session." } } }

No sé ¿Cómo puedo solucionar este problema? Puedes ver el GIF .

Código:

 import React from 'react'; import axios from 'axios'; const URL_LOGIN = `${process.env.REACT_APP_SERVER}Login`; const COMPANY_DB = process.env.REACT_APP_DB; const URL_ATTACHMENT = `${process.env.REACT_APP_SERVER}Attachments2`; const CREDENTIALS = { UserName: process.env.REACT_APP_USERNAME, Password: process.env.REACT_APP_PASSWORD, CompanyDB: COMPANY_DB }; function App() { const [isLogin, setIsLogin] = React.useState(false); const [selected, setSelected] = React.useState(null); function onClick() { setIsLogin(true); axios .post(URL_LOGIN, CREDENTIALS) .then(function (response) { setIsLogin(false); console.log(response.data); }) .catch(function (err) { setIsLogin(false); console.log(err); }); } // onUpload function handleUpload(event) { console.log('File set', event.target.files[0]); setSelected(event.target.files[0]); } function uploadSubmit() { const formData = new FormData(); formData.append('files', selected, selected?.name); axios .post(URL_ATTACHMENT, formData) .then(function (response) { console.log('response', response); }) .catch(function (err) { console.log('err', err); }); } return ( <div> <div> <button type="button" onClick={onClick} disabled={isLogin}> Login Create Cookie </button> </div> <hr /> <div> <div> <input type="file" onChange={handleUpload} /> </div> <button type="button" onClick={uploadSubmit}> Upload File </button> </div> </div> ); } export default App;
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Las cookies son gestionadas por el servidor, no por el cliente. En su caso, está utilizando una cookie con la bandera HttpOnly . Las secuencias de comandos del lado del cliente no le permitirán leer el valor de las cookies, ya que es una amenaza para la seguridad.

En su aplicación nodejs, el servidor debe enviar una Cookie en respuesta. El servidor debe estar haciendo algo como esto:

 // nodejs (express) res.cookie('cookieKey', "value", { maxAge: 900000, httpOnly: true });

observe el indicador httpOnly, este indicador evita que la secuencia de comandos del lado del cliente utilice la cookie.

Una vez que configure la cookie en respuesta a su solicitud de NodeJs (Express), su navegador debería comenzar a enviar automáticamente la Cookie con cada una de sus solicitudes.

over 4 years ago · Santiago Trujillo Relatório

0

Si la solicitud es de origen cruzado, asegúrese de agregar withCredentials: true como encabezado en la solicitud axios

over 4 years ago · Santiago Trujillo Relatório

0

Después de obtener con éxito la cookie/token del servidor, pase el token en el encabezado. (depende de cómo esté asegurando su punto final de API).

 axios .post(URL_ATTACHMENT, formData, { headers : { header : token }}) .then(function (response) { console.log('response', response); }) .catch(function (err) { console.log('err', err); });
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda