Javascript-在具有URL参数的本地主机上使用抓取

时间:2019-01-12 23:37:35

标签: javascript localhost fetch-api url-parameters

我的计算机的端口3001上运行着NodeJS服务器。我可以使用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)

但是,这会引发错误:

  

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

如何使用创建也可使用URL参数的本地主机的提取请求?

编辑:

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

  

通过CORS策略阻止从原点“ 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”到“ http://localhost:3000”的访存:所请求的资源上没有“ Access-Control-Allow-Origin”标头。如果不透明的响应满足您的需求,请将请求的模式设置为“ no-cors”以在禁用CORS的情况下获取资源。

1 个答案:

答案 0 :(得分:0)

根据Quentin的建议,我需要在http://前面添加localhost:3001。代码变为:

const url = new URL("http://localhost:3001")

然后,我需要在服务器上启用cors才能修复另一个错误。

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

const cors = require("cors")
app.use(cors())