Javascript - 在 localhost 上使用 fetch 和 URL 参数

Roy*_*son 3 javascript localhost url-parameters fetch-api

我有一个 NodeJS 服务器运行在我电脑的 3001 端口上。我可以使用fetch访问本地主机的端点,就像这样:fetch("/api_endpoint")

但是,我还想在我的 GET 请求中包含 url 参数。

通常,我可以通过这样做来包含 url 参数:

const url = new URL("localhost:3001")
const params = { sources: JSON.stringify(this.state.sources), timeRange: JSON.stringify(this.state.timeRange), minReacts: this.state.minReacts }
url.search = new URLSearchParams(params)
let data = await fetch(url)
Run Code Online (Sandbox Code Playgroud)

但是,这会引发错误:

获取 API 无法加载 localhost:3001?sources=%5B%22Confessions%22%2C%22Summer+Confessions%22%2C%22Timely+Confessions%22%5D&timeRange=%5B%222017-01-12T23%3A35%6AZ 22%2C%222019-01-12T23%3A35%3A07.667Z%22%5D&minReacts=20。对于 CORS 请求,URL 方案必须是“http”或“https”。

如何创建一个与 localhost 一起使用的获取请求,该请求也使用 URL 参数?

编辑:

添加http://到前面并不能解决问题。

访问 ' http://localhost:3001/?sources=%5B%22Confessions%22%2C%22Summer+Confessions%22%2C%22Timely+Confessions%22%5D&timeRange=%5B%222017-01-13T00% 3A00%3A17.309Z%22%2C%222019-01-13T00%3A00%3A17.310Z%22%5D&minReacts=20 ' from origin ' http://localhost:3000 ' 已被 CORS 策略阻止:No 'Access- Control-Allow-Origin' 标头存在于请求的资源上。如果不透明响应满足您的需求,请将请求的模式设置为“no-cors”以在禁用 CORS 的情况下获取资源。

Roy*_*son 9

根据 Quentin 的建议,我需要http://localhost:3001. 代码变成了:

const url = new URL("http://localhost:3001")
Run Code Online (Sandbox Code Playgroud)

之后,我需要在我的服务器上启用 cors 以修复另一个错误。

因为我使用的是 express,所以我只是运行npm install cors然后将以下 2 行添加到我的服务器:

const cors = require("cors")
app.use(cors())
Run Code Online (Sandbox Code Playgroud)