【发布时间】:2018-04-27 03:33:17
【问题描述】:
我是一名后端开发人员,我正在为从本地主机调用 api 的前端开发人员提供一个具有 JWT 安全性的 Spring Boot Rest API。因此,当他调用 POST 请求时,他说他收到了 CORS 错误。所以我添加了部分
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException {
response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With, remember-me");
chain.doFilter(request, response);
}
但他仍然收到错误。可能是什么原因。感谢任何帮助
OPTIONS https:my.domain/url 401 (Unauthorized)
当它是一个 POST 请求时。
控制器代码:
@RestController
public class RegistrationController {
@Autowired
@Qualifier("restTemplateUserRegitration")
private RestTemplate restTemplateUserRegitration;
@RequestMapping(value="${user.endpoint}",produces={MediaType.APPLICATION_JSON_VALUE},method=RequestMethod.POST)
public ResponseEntity<?> registerUser(@RequestBody Model ModelRequest){
Map<String, Object> Status=new HashMap<String, Object>();
FeedBackStatus = restTemplateUserRegitration.postForObject("http:serviceurl",registration/single",Model.class,Map.class );
return ResponseEntity.ok(Status);
}
}
【问题讨论】:
-
See this link 可能会有所帮助,this link 也可以
-
清除问题陈述。相关代码。没有不相关的代码。天哪,这是……一个好问题! (@joker21:他们只是相对罕见,似乎,来自新成员。不错的一个。)
-
我认为问题出在服务器端,它没有激活 CORS,所以即使设置了你的标题你也不能打电话。
-
@canillas:OP 正在谈论服务器端。适应症:“我是一名后端开发人员,我正在提供 Spring Boot Rest API……” 引用 Java 代码。写回复。
-
你做了什么调试?例如,您(来自
request.getHeader("Origin"))发回的Access-Control-Allow-Origin是否正确?是否有其他标头与您不允许的请求一起发送?
标签: java spring rest spring-boot