由API实现的CORS,但仍然出现错误

时间:2019-06-24 16:41:50

标签: java spring rest api vue.js

我有一个API,该API向另一个API发出请求以进行登录。

这是我的REST API(Spring Boot)中的CorsConfiguration类

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class CorsConfiguration implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/v1/api/**").allowedOrigins("*").allowedMethods("*").allowedHeaders("*");
    }
}

在端点(/ v1 / api / login)中,我在响应中设置了“ Access-Control-Allow-Origin”。

@PostMapping
    public ResponseEntity doLogin(@RequestBody String data, @RequestHeader("Content-Type") String content) throws IOException {
        if (content.equals("application/json;charset=UTF-8") && !data.isEmpty()) {
            HttpHeaders responseHeaders = new HttpHeaders();
            responseHeaders.set("Access-Control-Allow-Origin","*");
            Login login = new ObjectMapper().readValue(data, Login.class);
            if (login.getEmail() != null && login.getPassword() != null) {
                ResponseEntity res = loginService.auth(login);
                return new ResponseEntity(res.getBody(), responseHeaders, res.getStatusCode());
            }
        }
        return new ResponseEntity(HttpStatus.BAD_REQUEST);
    }

但是我的前端(Vue.JS)仍然出现此错误:

  

从“ http://localhost:3000/v1/api/login”访问XMLHttpRequest   原产地“ http://localhost:8080”已被CORS政策禁止:   “ Access-Control-Allow-Origin”标头包含多个值“ *,*”,   但只允许一个。

当我将另一个API的响应打印到我的数据库时,我看到:

  

<200,“ access_token”:“ e701bc80b64ab41cfba3efab1c516e3bcc61716b”,“ expires_in”:1200,“ token_type”:“ Bearer”,“ scope”:“”,“ refresh_token”:“ f3549bacde5c10fe76b97a91Date”, 2019年6月24日16:45:52 GMT“,服务器:” Apache / 2.4.18(Ubuntu)“,缓存控制:” no-store,private“,语法:” no-cache“,X-Robots-Tag: “ noindex”,访问控制允许来源:“ *”,访问控制允许方法:“ POST,GET,PUT,PATCH,DELETE,OPTIONS”,访问控制允许标题:“授权,内容-类型,接受”,访问控制权限凭证:“ true”,内容长度:“ 169”,保持活动状态:“超时= 5,最大= 100”,连接:“保持活动状态”,内容-类型:“ application / json”]>

我对前端的回应:

  

<200 OK OK,{“ access_token”:“ e701bc80b64ab41cfba3efab1c516e3bcc61716b”,“ expires_in”:1200,“ token_type”:“ Bearer”,“ scope”:“”,“ refresh_token”:“ f3549bacde5c10cf76b97a91 Control-Allow-Origin:“ *”]>

任何帮助都会有用!

0 个答案:

没有答案