gpt4 book ai didi

java - 已被 CORS 策略阻止 : Response to preflight request doesn't pass access control check: It does not have HTTP ok status

转载 作者:行者123 更新时间:2023-12-02 00:04:08 26 4
gpt4 key购买 nike

我的 Angular 代码

intercept(req: HttpRequest<any>, next: HttpHandler) {
const nextReq = req.clone({
headers: req.headers.set('Cache-Control', 'no-cache')
.set('Pragma', 'no-cache')
.set('Expires', 'Sat, 01 Jan 2000 00:00:00 GMT')
.set('If-Modified-Since', '0')
.set('Authorization', 'secret')
.set('client-id', 'test')


});

return next.handle(nextReq).timeout(220000).catch(this.handleError);
}

我的Java服务代码:

@Override
public boolean preHandle(
HttpServletRequest request,
HttpServletResponse response,
Object handler)
{
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE");
response.setHeader("Access-Control-Allow-Headers", "Content-Type, Access-Control-Allow-Headers, Authorization, Access-Control-Allow-Origin,cache-control,client-id,expires,if-modified-since, pragma");


String clientId = request.getHeader("client-id");

}

运行应用程序后,我收到此错误并且客户端 ID 为空 -已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:它没有 HTTP 正常状态

我已经添加了所有必需的 header 。

请帮忙

下面是我的网络调用

enter image description here

最佳答案

问题可能来自服务器端(你的后端),但你可以尝试这个以清晰的方式解决它。您能否尝试注入(inject)一个可以为您提供 cros 配置的 bean :

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.filter.GenericFilterBean;

public class CORSFilter extends GenericFilterBean implements Filter {

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chaine)
throws IOException, ServletException {
HttpServletResponse httpResponse = (HttpServletResponse)response;
httpResponse.setHeader("Access-Control-Allow-Origin", "*");
httpResponse.setHeader("Access-Control-Allow-Methods", "*");
httpResponse.setHeader("Access-Control-Allow-Headers", "*");
httpResponse.setHeader("Access-Control-Allow-Credentials", "false");
httpResponse.setHeader("Access-Control-Max-Age", "3600");
System.out.println("****************** CORS Configuration Completed *******************");
chaine.doFilter(request, response);
}

}

在主类中,尝试像这样注入(inject) bean:

@Bean
public FilterRegistrationBean crosFilterRegistration(){
FilterRegistrationBean registrationBean = new FilterRegistrationBean(new CORSFilter());
registrationBean.setName("CORS Filter");
registrationBean.addUrlPatterns("/*");
registrationBean.setOrder(1);
return registrationBean;
}

希望这对您或其他人有用:)

关于java - 已被 CORS 策略阻止 : Response to preflight request doesn't pass access control check: It does not have HTTP ok status,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58165455/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com