Javascript CORS飞行前请求错误

Javascript CORS飞行前请求错误,javascript,Javascript,我试图从服务器获取一些数据,但我的请求返回以下错误:飞行前响应中的访问控制允许标头不允许请求标头字段访问控制允许来源 我试图通过在stackoverflow找到一些例子来解决这个问题,但在我的例子中,没有一个解决方案似乎不起作用 以下是我目前的代码: var xhttp = new XMLHttpRequest(); xhttp.open("GET", "http://api.admin.wobbl.io/policy/preview?id=41", true); xht

我试图从服务器获取一些数据,但我的请求返回以下错误:飞行前响应中的访问控制允许标头不允许请求标头字段访问控制允许来源

我试图通过在stackoverflow找到一些例子来解决这个问题,但在我的例子中,没有一个解决方案似乎不起作用

以下是我目前的代码:

    var xhttp = new XMLHttpRequest();
    xhttp.open("GET", "http://api.admin.wobbl.io/policy/preview?id=41", true);
    xhttp.setRequestHeader("Access-Control-Allow-Origin", "*");
    xhttp.setRequestHeader("Access-Control-Allow-Credentials", "true");
    xhttp.setRequestHeader("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT");
    xhttp.setRequestHeader("Access-Control-Allow-Headers", "Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers");
    xhttp.send();

有什么问题吗?

您不应该在JS中设置这些头文件,如果CORS配置正确,服务器应该在将响应发送回您之前设置这些头文件


访问控制标头由浏览器处理,这将阻止来自不允许来源的请求运行。

服务器是否正确配置为支持CORS?能否添加响应标头的片段?访问控制标头是响应标头,而不是请求标头。不要把它们放在请求上!!我真的不知道,我需要检查它,因为我没有在服务器端编写代码。“这是一种防止跨站点请求伪造攻击的安全措施。”-CSRF是一种完全不同的攻击。“你在客户端设置这些头吗?”-你为什么问这个问题?你可以在问题的代码中看到它们。据我所知:访问控制来源将有助于防止未经授权的来源执行请求,因此在CSRF的情况下,攻击网站将无法成功代表某人执行帖子。CORS不限制对数据的访问,而是指示浏览器专门允许访问来自跨来源请求的响应。虽然反CSRF令牌仍应使用,因为我们不依赖客户端安全,但我知道访问控制头有助于防止CSRF攻击。“访问控制源将有助于防止未经授权的源执行请求”-很少。主要是(缺少它)它阻止JavaScript在发出请求后读取响应中的数据。是的,从我读取的数据来看,对于需要飞行前请求的请求,它将失败,但在其他情况下仍然会到达服务器。JS无法读取响应,但在某些情况下,这足以造成一些损害。