Reactjs 如何在React JS上访问Spring引导API

Reactjs 如何在React JS上访问Spring引导API,reactjs,maven,spring-boot,twitter,Reactjs,Maven,Spring Boot,Twitter,每当我在react JS的搜索表单上提交关键字时,我都会尝试访问我的twitter api。 通过API获取推文的spring引导代码正在工作,我可以通过url访问它 现在我正在尝试在我的react JS表单上连接这个API,所以当我在react上搜索关键字时,它将通过这个API调用访问twitter并显示结果。 从早上开始,我就一直在浏览在线代码,我一直在尝试所有的建议,但到目前为止都没有任何效果 我在控制台上收到此错误消息 加载资源失败:服务器响应状态为403() twitter:1从源“”

每当我在react JS的搜索表单上提交关键字时,我都会尝试访问我的twitter api。 通过API获取推文的spring引导代码正在工作,我可以通过url访问它 现在我正在尝试在我的react JS表单上连接这个API,所以当我在react上搜索关键字时,它将通过这个API调用访问twitter并显示结果。 从早上开始,我就一直在浏览在线代码,我一直在尝试所有的建议,但到目前为止都没有任何效果

我在控制台上收到此错误消息

加载资源失败:服务器响应状态为403() twitter:1从源“”获取“”的访问已被CORS策略阻止:请求的资源上不存在“访问控制允许源”标头。如果不透明响应满足您的需要,请将请求的模式设置为“no cors”,以获取禁用cors的资源

弹簧启动代码

@RestController
@RequestMapping("/trend")
public class TwitterController {
    private TwitterService twitterService = new TwitterService();

    // Get all tweets by keyword
    @GetMapping("/twitter")
    @CrossOrigin(origins = "http://localhost:3000/")

    public List<Tweet> getTweets(@RequestParam("keyword") String keyword) {
        return twitterService.getTweets(keyword);
    }

@RestController
@请求映射(“/trend”)
公共类twitter控制器{
私有TwitterService TwitterService=新TwitterService();
//按关键字获取所有推文
@GetMapping(“/twitter”)
@交叉原点(原点=”http://localhost:3000/")
公共列表getTweets(@RequestParam(“关键字”)字符串关键字){
返回twitterService.getTweets(关键字);
}
ReactJS代码

class App extends Component {

  getTrend = async (e) => {
    e.preventDefault();

    const keyword = e.target.elements.keyword.value;

    const api_call = await fetch(`http://localhost:8081/trend/twitter?keyword=${keyword}`); //make API call

    // axios.get('http://localhost:8081/trend/twitter?keyword=${keyword}')
    //.then((res) => {
      console.log(api_call);
   // });
  }

  render() {
    return (
      <div>
          <div class="col-sm-9">
            <SearchEngine getTrend={this.getTrend} />
          </div> 
      </div>
    );
  }
}

export default App;
类应用程序扩展组件{
getTrend=async(e)=>{
e、 预防默认值();
const keyword=e.target.elements.keyword.value;
const api_call=等待获取(`http://localhost:8081/trend/twitter?keyword=${keyword}`);//进行API调用
//axios.get()http://localhost:8081/trend/twitter?keyword=${keyword}')
//。然后((res)=>{
console.log(api_调用);
// });
}
render(){
返回(
);
}
}
导出默认应用程序;

您尝试在
http://localhost:3000/
,但需要
http://localhost:8081

您从哪个主机调用spring boot应用程序?您可能需要更新您的CORS源以匹配。我还使用端口8081的本地主机调用spring boot应用程序。您需要在spring boot上安装CORS插件,即我在LaravelAPI中所做的,然后在CORS文件上设置AllowedOriginates=>*。