HTTPS 请求:CORS 错误,但我仍然获得数据
HTTPS Request : CORS error but I still get data
我正在向私有 API(托管的 Itop)发出 HTTPS 请求,我得到了响应,但出现 CORS Multiple Origin Not Allow
错误,因此我的 JavaScript 程序无法使用回复内容.
我应该有 CORS 授权
请求是 POST
,是用 fetch 发出的,之前没有发出预检 (OPTIONS
) 请求(fetch 单独为我的另一个 GET
API 请求但没有在这里)
Firefox 的某些服务器响应时间也很长(~2 秒),但似乎没有任何改变
firefox 是识别此问题的最佳浏览器,
您可以按照此路径解决此问题。
当您从前端发送请求时,响应将来自后端。但不允许浏览器访问 javascript。这是 cors 错误。
1.open 你的后端,然后创建一个包调用 CorsFilter。
2.然后创建一个过滤servlet
3. 粘贴此代码
CorsFilter
@WebFilter(filterName = "CorsFilter", urlPatterns = "/*")
public class CorsFilter extends HttpFilter {
@Override
protected void doFilter(HttpServletRequest req, HttpServletResponse res, FilterChain chain) throws IOException, ServletException {
String origin = req.getHeader("Origin");
if (origin != null && origin.toLowerCase().contains(getServletContext().getInitParameter("origin"))) {
res.setHeader("Access-Control-Allow-Origin", origin);
res.setHeader("Access-Control-Allow-Headers", "Content-Type");
res.setHeader("Access-Control-Expose-Headers", "Content-Type");
if (req.getMethod().equals("OPTIONS")) {
res.setHeader("Access-Control-Allow-Methods", "OPTIONS, GET, PUT, POST, DELETE, HEAD");
}
}
chain.doFilter(req, res);
}
}
不允许在同一个响应中发送多个 Access-Control-Allow-Origin
header 或一个 header 中的多个来源。在评论中,您在一个回复中描述了两个相同的 Access-Control-Allow-Origin
header。甚至不允许两个相同的来源。后台代码中去掉一个header.
我正在向私有 API(托管的 Itop)发出 HTTPS 请求,我得到了响应,但出现 CORS Multiple Origin Not Allow
错误,因此我的 JavaScript 程序无法使用回复内容.
我应该有 CORS 授权
请求是 POST
,是用 fetch 发出的,之前没有发出预检 (OPTIONS
) 请求(fetch 单独为我的另一个 GET
API 请求但没有在这里)
Firefox 的某些服务器响应时间也很长(~2 秒),但似乎没有任何改变
firefox 是识别此问题的最佳浏览器, 您可以按照此路径解决此问题。 当您从前端发送请求时,响应将来自后端。但不允许浏览器访问 javascript。这是 cors 错误。
1.open 你的后端,然后创建一个包调用 CorsFilter。 2.然后创建一个过滤servlet 3. 粘贴此代码
CorsFilter
@WebFilter(filterName = "CorsFilter", urlPatterns = "/*")
public class CorsFilter extends HttpFilter {
@Override
protected void doFilter(HttpServletRequest req, HttpServletResponse res, FilterChain chain) throws IOException, ServletException {
String origin = req.getHeader("Origin");
if (origin != null && origin.toLowerCase().contains(getServletContext().getInitParameter("origin"))) {
res.setHeader("Access-Control-Allow-Origin", origin);
res.setHeader("Access-Control-Allow-Headers", "Content-Type");
res.setHeader("Access-Control-Expose-Headers", "Content-Type");
if (req.getMethod().equals("OPTIONS")) {
res.setHeader("Access-Control-Allow-Methods", "OPTIONS, GET, PUT, POST, DELETE, HEAD");
}
}
chain.doFilter(req, res);
}
}
不允许在同一个响应中发送多个 Access-Control-Allow-Origin
header 或一个 header 中的多个来源。在评论中,您在一个回复中描述了两个相同的 Access-Control-Allow-Origin
header。甚至不允许两个相同的来源。后台代码中去掉一个header.