Javascript 如何添加跨源资源共享请求头?

Javascript 如何添加跨源资源共享请求头?,javascript,reactjs,rest,google-chrome,cors,Javascript,Reactjs,Rest,Google Chrome,Cors,我正在使用React JS构建一个REST消费者,我已经构建了一个REST api作为后端服务,前端将是一个完全不同的应用程序。将前端与后端分离 我目前正在努力解决的是从前端到后端的跨源请求。后端托管在,前端react应用托管在。发出请求时,控制台上出现以下错误: 加载失败:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许来源”标头。因此,不允许访问源“”。如果不透明响应满足您的需要,请将请求的模式设置为“no cors”,以获取禁用cors的资源 现在,我已通过chrom

我正在使用React JS构建一个REST消费者,我已经构建了一个REST api作为后端服务,前端将是一个完全不同的应用程序。将前端与后端分离

我目前正在努力解决的是从前端到后端的跨源请求。后端托管在,前端react应用托管在。发出请求时,控制台上出现以下错误:

加载失败:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许来源”标头。因此,不允许访问源“”。如果不透明响应满足您的需要,请将请求的模式设置为“no cors”,以获取禁用cors的资源

现在,我已通过chrome扩展修复了此错误,以允许CORS:

但这只是一个临时解决方案,我尝试添加
accesscontrolalloworigin
标题,但似乎不起作用

这是用于发出请求的my代码:

let Myheaders = new Headers()
Myheaders.append("Access-Control-Allow-Origin", "http://localhost:8080/")

let res = await fetch("http://localhost:8080/api/something", 
{
    method: "get", 
    mode: "cors",
    headers: Myheaders
})
let res1 = await res.json()
我尝试过为带有反斜杠或不带反斜杠的Access Control Allow Origin标头添加多个值,但似乎没有任何效果


有没有人遇到过同样的问题并有解决方案?

这是后端问题而不是前端问题
您应该允许来自后端的COR,这取决于后端使用的技术

您的JavaScript不能授予自己访问REST API的权限。该权限必须由REST API授予。您试图添加的头属于响应,而不是请求。谢谢,原来这是后端问题。后端是用Kotlin在Springboot中构建的,通过本教程,它在第一次尝试时就成功了:我可以从Postman向后端发出请求,因此,所有的设置都是正确的。@HarryStylesheet-重复问题的公认答案解释了为什么它可以与Postman一起使用,而不是与基于浏览器的JS一起使用。我以前遇到过同样的问题,当请求从浏览器发出时,在其标题中包含域,但在Postman标题中不发送任何域我在后端使用spring boot,我为此,请添加@Bean CorsConfiguration source CorsConfiguration source(){CorsConfiguration configuration configuration=new CorsConfiguration();configuration.setAllowedOrigins(Arrays.asList(“);configuration.setAllowedMethods(Arrays.asList(“GET”,“POST”);……return source;}我的安全配置现在已经修复,我还在后端使用了Springboot和Kotlin。本教程帮助了我:。只需在REST控制器上方的@CrossOrigin(origins=“)注释就可以了,但是如果您想在所有API上都允许CORS,可以通过添加代码来避免将注释添加到所有API中