Safari使用“请求标头字段”失败XMLHttpRequest(POST)Access-Control-Allow-Headers不允许使用Content-Type

时间:2014-10-15 21:37:52

标签: javascript ajax safari

我只是想使用httpbin来测试XMLHttpRequests。

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<script type="text/javascript">
    (function() {
        var xhrToCheck = new window.XMLHttpRequest();
        xhrToCheck.open("POST", "http://httpbin.org/post");
        xhrToCheck.onreadystatechange = function() {
            if(this.readyState === 4) {
                console.log(this);
            }
        };
        xhrToCheck.send("post test");

    })();
</script>
</body>
</html>

什么有效:

  1. Firefox和Chrome中的相同POST请求
  2. 将Firefox,Chrome和Safari中的请求添加到网址http://httpbin.org/gethttps://httpbin.org/get
  3. 我得到的错误:

    [Error] Failed to load resource: Request header field Content-Type is not allowed by Access-Control-Allow-Headers. (post, line 0)
    [Error] XMLHttpRequest cannot load http://httpbin.org/post. Request header field Content-Type is not allowed by Access-Control-Allow-Headers. (index.html, line 0)
    

    任何有关此问题发生原因的帮助都将不胜感激!

    编辑:对不起,我想我的主要问题是1)如何修复此问题,以便在safari上发出POST请求不会抛出错误

1 个答案:

答案 0 :(得分:0)

出于安全考虑,某些浏览器会检查&#34; host&#34;和#34; access-control-allow-origin&#34;是相同的,或者access-control-allow-origin允许主机网址发出请求,这样浏览器可以保护您免受Chrome中XSS的攻击,您可以禁用该安全功能(here explains how)。< / p>

甚至还有Chrome plugin