我编写了一个程序,使用前端技术的React框架,调用后端写好的.net core接口实现一个生成word文档的功能,我在请求的时候抛出异常了。
POST https://localhost:44384/Home/GenerateDocument net::ERR_CONNECTION_REFUSED
dispatchXhrRequest @ xhr.js:251
xhr @ xhr.js:49
dispatchRequest @ disp
示表明客户端无法验证服务器的SSL证书。ERR_CERT_AUTHORITY_INVALID错误通常表示您正在连接到一个未知的或不受信任的服务器,并且该服务器使用了无效的SSL证书。
我想要不安装证书的情况下实现调用后端.net core接口,有什么好的办法的吗?
后端接口
[HttpPost]
public async Task<IActionResult> GenerateDocumentAsync([FromBody] Document document )
{
var documentBytes = await _documentService.GenerateDocumentAsync(document);
return File(documentBytes, "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "MyDocument.docx");
}
目前后端接口时一个本地的地址还没有部署
https://localhost:44384/Home/GenerateDocument
前端方法
const generateDoc = async () => {
try {
debugger
const response = await axios.post('接口地址t', { selectedRows });
const blob = new Blob([response.data], { type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' });
const url = window.URL.createObjectURL(blob);
const link = document.createElement('a');
link.href = url;
link.download = 'selected-data.docx';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
} catch (error) {
console.error(error);
}
};
在不安装SSL证书的情况下访问后端接口
在 React 中调用 .NET Core 编写的接口,可以通过 Fetch 或 Axios 等第三方库实现。这里以 Fetch 为例,提供一个简单的示例。
首先,在 .NET Core 中编写一个简单的 API 接口,以返回一个 JSON 对象:
[Route("api/[controller]")]
[ApiController]
public class BooksController : ControllerBase
{
[HttpGet]
public IActionResult Get()
{
var books = new List<Book>
{
new Book { Id = 1, Title = "React in Action" },
new Book { Id = 2, Title = "ASP.NET Core in Action" }
};
return Ok(books);
}
}
public class Book
{
public int Id { get; set; }
public string Title { get; set; }
}
上述示例中,我们创建了一个名为 BooksController 的 API 控制器,该控制器具有一个 Get 方法,返回一个包含两个 Book 对象的 JSON 数组。我们可以使用 OpenAPI 工具来测试该 API 是否可以正常访问。
接下来,在 React 中使用 Fetch 方法调用该接口:
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
books: []
};
}
componentDidMount() {
fetch("http://localhost:5000/api/books")
.then(response => response.json())
.then(data => {
this.setState({ books: data });
});
}
render() {
return (
<div>
{this.state.books.map(book => (
<p key={book.id}>{book.title}</p>
))}
</div>
);
}
}
在上述示例中,我们定义了一个名为 App 的 React 类组件,该组件在 componentDidMount 生命周期方法中使用 Fetch 方法调用我们在 .NET Core 中编写的 BooksController API 接口,并将返回的数据渲染到页面上。
需要注意的是,调用 Fetch 方法时需要使用完整的 API 地址,包括协议、主机名和端口等信息,并且需要在 componentDidMount 生命周期方法中调用 Fetch 方法,以确保组件加载完成后再进行数据获取。
总之,通过 Fetch 方法调用 .NET Core 接口只是其中一种方式,开发人员可以根据需要选择适合自己的方式,例如使用 Axios 等第三方库。以上示例仅供参考,具体实现根据实际情况而定。