我正在使用axios从Java后端获取数据,由于cors问题,该操作失败了(请查看所附的屏幕截图)。我注意到的一件事是,如果我将axios文件中的AuthToken部分注释掉,它可以正常工作并给出状态200,并且如果我保留AuthToken,则可以消除错误的原因。不太确定问题是在Java代码中还是在axios.js文件中缺少。任何帮助将不胜感激。预先感谢。
axios.js
import axios from "axios";
const instance = axios.create({
baseURL: "https://abc.domain.com"
});
instance.defaults.headers.common["AuthToken"] =
"myAuthToken";
export default instance;
.java文件中的标题
response.addHeader("Access-Control-Allow-Origin", "*");
response.addHeader("Access-Control-Allow-Methods", "POST, OPTIONS, GET, PUT, DELETE");
response.addHeader("Access-Control-Allow-Headers", "Content-Type, AuthToken");
response.addHeader("Content-Type", "application/json");
response.addHeader("Accept", "application/json");
答案 0 :(得分:0)
错误是自我解释
没有Access-Controll-Allow-Origin标头
您还有其他标头,但不是。
至
我注意到的一件事是,如果我注释掉AuthToken部分, axios文件,它工作正常,并提供状态200,如果我保留 AuthToken,
这是因为纯GET
被认为是“简单请求”,不适用于CORS限制。当您向请求中添加其他标头时,它就不再简单了,CORS也将启动。
有关简单请求的更多详细信息,请参见https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#Simple_requests
答案 1 :(得分:0)
您将要查看这篇文章:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin
对于没有凭据的请求,可以将字面值“ *”指定为通配符;该值告诉浏览器允许从任何来源请求代码来访问资源。尝试将通配符与凭据一起使用将导致错误。
如您所见,您正在传递具有 凭据的请求。这就是为什么当您省略令牌时,它起作用的原因,但是当您重新添加令牌时,它却无效。解决方案是在Java端显式指定域,而不是使用*