CORS:对预检请求的响应未通过访问控制检查:预检请求不允许重定向
Posted
技术标签:
【中文标题】CORS:对预检请求的响应未通过访问控制检查:预检请求不允许重定向【英文标题】:CORS : Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request 【发布时间】:2019-10-28 02:40:56 【问题描述】:我正在尝试将 angualar js 应用程序与后端 spring boot 集成,其中我面临的重定向不允许预检请求
这部署在 openshift 上,我已经通过在控制器方法中添加一些注释来配置启用 cors,这帮助我解决了: 请求在传入请求中没有“Access-Control-Allow-Origin”标头:CORS 政策问题。
@CrossOrigin(allowedHeaders = "*", origins = "*", exposedHeaders =
"Access-Control-Allow-Origin", methods =
RequestMethod.POST, RequestMethod.GET, RequestMethod.PUT,
RequestMethod.DELETE, RequestMethod.HEAD,
RequestMethod.OPTIONS, RequestMethod.PATCH, RequestMethod.TRACE )
@RestController
public class Controller
@Autowired
Service botService;
@Autowired
Environment env;
@CrossOrigin()
@RequestMapping(value = "/jwtToken", method =
RequestMethod.POST , produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(HttpStatus.OK)
public ResponseEntity<UnifiedService> botConntor(
@RequestBody UnifiedInput input, HttpServletRequest request)
UnifiedBPMService output = botService.processBotRequest(input, request);
return new ResponseEntity<UnifiedService>(output, HttpStatus.OK);
我在实际的角度应用程序中得到的错误是:
从 'http:///chatbot/api/jwtToken' 访问 XMLHttpRequest 来源“http://”已被 CORS 策略阻止:响应 预检请求未通过访问控制检查:重定向未通过 允许预检请求。
选项调用返回了以下响应:
Request URL: http://<domain>/chatbot/api/jwtToken
Request Method: OPTIONS
Status Code: 302 Found
Remote Address: 10.235.222.220:80
Referrer Policy: no-referrer-when-downgrade
【问题讨论】:
您可以尝试添加 @CrossOrigin(origins = "*" , maxAge = 4800, allowCredentials = "false") 但 origins 应该是 * 并删除暴露的标头 @AhmadQureshi :建议的更改无助于解决问题。我仍然得到同样的错误 你可以尝试从方法级别删除@CorsOrigin @AhmadQureshi :已删除,但仍然是同样的问题 【参考方案1】:您的后端正在重定向 (302),而不是向 OPTIONS/preflight 请求发送正确的响应 (200)。检查您的后端日志,看看它为什么会重定向。可能类似于 Spring security 拒绝 OPTIONS 请求并重定向到您的登录页面。
【讨论】:
我也面临同样的问题,但后端日志根本没有任何数据。 我也面临同样的问题。使用 SSO 服务器时,需要在服务器端进行重定向,而不是发送403
。
我不确定这是否会有所帮助,但在这种情况下,Spring 安全日志记录通常非常少。我总是要做的第一步是启用调试日志记录。试试-Dlogging.level.org.springframework.security=DEBUG
以上是关于CORS:对预检请求的响应未通过访问控制检查:预检请求不允许重定向的主要内容,如果未能解决你的问题,请参考以下文章
OAuth 中的 CORS:对预检请求的响应未通过访问控制检查
cors(cors 策略:对预检请求的响应未通过访问控制检查)角度 7 中的错误