我被这个问题困扰了3天。 我在前端使用React.js和axios
,想将文件上传到服务器。存在一个API端点,它是一个post端点,类似于这样。
POST- https://88.66.123.122:20000/b1s/v1/Attachments2
这个端点基本上是将文件上传到服务器文件系统,并具有状态码为201
的成功响应。当我使用桌面客户端Postman
和此工具生成的代码片段测试端点时,响应非常好。
但我想在浏览器UI中实现这个功能。因此,我正在使用React.js。
此端点还需要请求头中的授权 cookie,以确保用户已经通过认证。因此,在UI中,我创建了一个登录按钮,该按钮会发送带有硬编码凭据的post请求到login
端点,并给我一个带有会话ID的成功响应。
我将会话ID保存在浏览器中作为cookie,但是当我发送带有cookie的请求时,在浏览器中收到以下响应:
Refused to set unsafe header "Cookie"
并且我通过以下JSON获得返回响应。
POST https://88.66.123.122:20000/b1s/v1/Attachments2 [401 (Unauthorized)]
{
"error" : {
"code" : 301,
"message" : {
"lang" : "en-us",
"value" : "Invalid session."
}
}
}
我不知道如何解决这个问题?你可以查看GIF。
代码:
代码: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;
uploadSubmit()
函数时吗? - Tasos K.uploadSubmit()
axios头配置中设置cookie时。 - Ven Nilson