CORS过滤器错误 - 需要帮助来修复它

时间:2016-03-09 07:04:10

标签: javascript cors

我正在尝试创建一个javascript + html,它实际上执行CSRF(跨站点请求伪造)等操作。到目前为止,我能够做到这一点。

<html> <head>
   <script type="text/javascript">
    function logData() {
        var xhr = new XMLHttpRequest()
        xhr.open("POST", "https://example.com", true);
        xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
        xhr.setRequestHeader("Accept-Language", "en-US,en;q=0.5");
        xhr.setRequestHeader("Accept", "application/json, text/javascript, */*; q=0.01");
        xhr.send("data"); } </script> </head> <body>
        <input type="submit" value="Submit request" onclick="logData()" /> </body> </html>

当我运行时,我收到如下所示的错误: &#34; XMLHttpRequest无法加载https://example.com。对预检请求的响应没有通过访问控制检查:否&#39;访问控制 - 允许 - 来源&#39;标头出现在请求的资源上。起源&#39; null&#39;因此不允许访问。响应的HTTP状态代码为400。&#34;

经过一番谷歌搜索后,我才知道这个错误的产生是因为这个原因: &#34 ;.原因是在实际请求之前有一个叫做预检请求的东西,这是一个OPTIONS请求。所以错误来自于预检请求没有产生必要的标题&#34;

所以,我试图在上面显示的相同代码上添加CORSFilter。老实说,我在javascript上没有太多好手。

所以,请告诉我......如何在这里添加CORSfilter ..

非常感谢

2 个答案:

答案 0 :(得分:0)

服务器需要在响应中包含Access-Control-Allow-Origin标头。您的服务器需要包含Access-Control-Allow-Origin之类的内容:https://example.com

答案 1 :(得分:0)

您的请求可能正在进行&#34;预检&#34; OPTIONS请求服务器询问CORS功能。您的POST请求处理程序不仅应该发送Access-Control-Allow-Origin: *标头以及响应,还应该创建一个OPTIONS请求处理程序,该处理程序也会发送此标头。有关预检OPTIONS请求的更多信息in this MDN documentation。您应该能够查看检查器以查看浏览器是否正在执行此预检请求。当我构建OPTIONS请求处理程序时,我通常会回复这些标题(也可以在我链接的MDN文档中找到):

Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Max-Age: 1728000