【发布时间】:2021-01-14 15:48:41
【问题描述】:
我正在尝试使用 Axios 获取数据,(网址:http://3.134.99.170:4000/upcomingMovies)
我总是收到此错误:(CORS 策略已阻止从源“http://localhost:9000”访问“http://3.134.99.170:4000/upcomingMovies”处的 XMLHttpRequest:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。)
我也尝试过使用 fetch 和 superagent,但又出现了同样的错误。
另外,这是我的代码:
axios({
method: "GET",
url: "http://3.134.99.170:4000/upcomingMovies",
headers: {
'Access-Control-Allow-Headers': 'Content-Type, Accept, Access-Control-Allow-Origin, Access-Control-Allow-Methods',
'Access-Control-Allow-Origin' : '*',
'Access-Control-Allow-Methods' : 'GET,PUT,POST,DELETE,PATCH,OPTIONS',
"Content-type": "application/json"
}
})
.then((response) => {
setUpcomingMovies(response)
})
.catch((error) => {
console.log(error)
})
【问题讨论】:
-
您必须在后端将您的前端 ip/域列入白名单。你可以在这里阅读更多关于 CORS 的信息developer.mozilla.org/en-US/docs/Web/HTTP/CORS
-
这个 API 是由一个研究所提供的,我相信他们可能已经使用了很多年了。这不应该是他们的第一个问题吗?
-
我不确定。但毫无疑问,这是后端必须允许的。您发出的任何请求都将通过
pre-flight options请求,该请求将检查cross-origin标头,然后只有它会发出实际的 GET 请求。您的请求在OPTIONS请求中被拒绝,并引发错误提示your domain is blocked。
标签: javascript api axios fetch