我正在尝试使用Spring Boot和React编写带有spotify api的简单应用程序。在spring boot site中,我有一个很好的工作控制器:
@RestController
@CrossOrigin()
public class SpotifyTopArtistClient {
@GetMapping("/artist")
public SpotifyArtist getTopArtist(OAuth2Authentication details){
String jwt = ((OAuth2AuthenticationDetails)details.getDetails()).getTokenValue();
RestTemplate restTemplate = new RestTemplate();
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.add("Authorization","Bearer "+jwt);
HttpEntity httpEntity = new HttpEntity(httpHeaders);
ResponseEntity<SpotifyArtist>
exchange=restTemplate.exchange("https://api.spotify.com/v1/me/top/artists?
time_range=medium_term&limit=1&offset=0", HttpMethod.GET,httpEntity,SpotifyArtist.class);
return exchange.getBody();
}
}
在使用main方法的课堂上,我有一个bean:
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("http://localhost:3000")
.allowedMethods("GET", "POST", "PUT", "DELETE", "HEAD", "PATCH", "OPTIONS")
.allowCredentials(true);
}
};
}
还有我的安全课:
@Configuration
@EnableOAuth2Sso
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/test").authenticated();
http.authorizeRequests().antMatchers("/artist").authenticated();
http.authorizeRequests().antMatchers("/login").authenticated();
http.authorizeRequests().antMatchers("/login/*").authenticated();
http.cors().and().csrf().disable();
}
}
当我测试endpoint时http://localhost:8080/artist在浏览器和邮递员中,它的工作方式和我预期的一样。
在反应方面,我有代码:
componentDidMount(){
fetch('http://localhost:8080/artist')
.then(response => response.json())
.then(data=>{
console.log(data)
})
}
当我试图运行这个程序时,我看到策略CORS错误:
获取的权限'https://accounts.spotify.com/authorize?client_id=8c8db951b0614847b5faf36b300fcb07
为什么SpotifyTopartistClient类之上的附加符号CrossOrigin不起作用?也许有人对Spotify api有更好的体验,可以帮助我?请
尝试以下操作:
@RestController
public class SpotifyTopArtistClient {
(...)
}
现在更新WebMVCConfigure
:
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("http://localhost:3000")
.allowedMethods("GET", "POST", "PUT", "DELETE", "HEAD", "PATCH", "OPTIONS")
.allowCredentials(true);
}
};
}
我试图生成一个简单的axios请求,如下所示(我正在使用vue.js): 但我得到以下错误: 我已经尝试过添加下面的头,但仍然不起作用 但是如果我尝试通过浏览器发出请求(简单地通过复制和粘贴url),一切都很好。 有人知道怎么帮我吗?非常感谢!
我已经为jwt身份验证设置了一个节点/Express服务器,可以与我的Create React应用程序一起使用。我用的是CORS npm包和简单中间件< code > app . use(CORS());来解决预期的CORS相关问题及其正常工作。 现在我想将 Elasticsearch 和 ReactiveSearch 添加到我的 React 应用程序中,并试图弄清楚如何克服本地 ES 实例的 C
我试图调用一些API在我的javascript代码中获取。我正在我的机器中使用ReactJs开发,并在同一网络中使用另一台机器中的. net开发API。有了邮递员,我可以调用应用编程接口,但是没有。我尝试调用其他服务器中的另一个API,结果是成功的。 我正在使用fetch并尝试使用axios。我在这个API的堆栈溢出中发现了另一个问题:https://gturnquist-quoters.cfap
我的应用程序最近收到一个错误 “在'https://my-service-domain/socket.io/?EIO=3 当我连接到 socket.io。我还没有找到这个问题的解决方案,我将详细描述如下图所示,是否有人遇到过此错误。 服务器配置: 客户端配置: 我试图切换webocket连接选项,我得到了错误 "WebSocket连接到'wss://my-service-field/socket.
我有一个flask socketio服务器,运行在带有nginx的ubuntu上。我有一个客户端调用服务器。当我尝试呼叫服务器时,收到以下错误: 这是我对烧瓶的初始化: ... 这是我当前在nginx中的配置: 来自客户端对服务器的请求如下所示: 我尝试过: -添加允许CORS到位置/仅,以及两者-在烧瓶应用程序中删除/添加allow CORS origin。 有人能帮忙吗?
我的网址不同。 错误: CORS策略阻止从https://url.example.com/b/478Lhttp://localhost:3000访问XMLHttpRequest:对预试请求的响应不通过权限改造检查:请求的资源上不存在访问控制允许起源标头。