Fetch API 无法加载 fileCUsersJackDesktopBooks_Hbook-sitepublicapibooks。对于 CORS 请求,UR

编程代码etc

1个回答

写回答

13963272735

2025-06-16 23:05

+ 关注

etc
etc

使用Fetch API进行网络请求是一种常见的方法,可以方便地从服务器获取数据。然而,当我们尝试加载一个文件时,却遇到了一个错误:“Fetch API无法加载file:///C:/Users/Jack/Desktop/Books_H/book-site/public/api/books”。这是因为Fetch API对于CORS(跨域资源共享)请求,要求URL方案必须是“http”或“https”。

在这篇文章中,我们将介绍CORS请求的概念以及为什么URL方案必须是“http”或“https”。同时,我们还将提供一个案例代码来说明如何解决这个问题。

什么是CORS请求?

CORS请求是一种在Web应用程序中进行跨域请求的安全机制。跨域请求是指在一个域名下的Web应用程序请求另一个域名下的资源。例如,当我们的应用程序在本地运行时,尝试从本地文件系统加载一个文件,就会触发跨域请求。

为什么URL方案必须是“http”或“https”?

URL方案指的是URL的协议部分,例如“http”或“https”。Fetch API要求CORS请求的URL使用“http”或“https”这两个协议,而不是“file”协议。这是出于安全考虑的,因为使用“http”或“https”协议可以提供加密和身份验证等安全特性,而“file”协议则没有这些保护措施。

解决方案

要解决这个问题,我们需要将文件的访问方式更改为通过“http”或“https”协议来访问。这可以通过在本地搭建一个简单的Web服务器来实现。下面是一个使用Node.JS创建本地服务器的示例代码:

Javascript

const http = require('http');

const fs = require('fs');

const server = http.createServer((req, res) => {

const filePath = 'path/to/your/file';

fs.readFile(filePath, 'utf-8', (err, data) => {

if (err) {

res.writeHead(404, { 'Content-Type': 'text/plAIn' });

res.end('File not found');

} else {

res.writeHead(200, { 'Content-Type': 'text/plAIn' });

res.end(data);

}

});

});

server.listen(3000, () => {

console.log('Server is running on http://localhost:3000');

});

在上面的代码中,我们创建了一个简单的HTTP服务器,并在指定的端口(3000)上监听请求。当有请求时,我们读取指定文件的内容,并将其作为响应返回。

通过使用Fetch API进行网络请求,我们可以方便地从服务器获取数据。然而,当我们尝试加载一个文件时,如果遇到了CORS错误,我们需要将文件的访问方式更改为通过“http”或“https”协议来访问。这可以通过在本地搭建一个简单的Web服务器来实现。希望本文能帮助您解决类似的问题。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号