【问题标题】:Origin null is not allowed by Access-Control-Allow-Origin [duplicate]Access-Control-Allow-Origin 不允许 Origin null [重复]
【发布时间】:2012-08-16 15:47:51
【问题描述】:

json 响应在{"userName":"clevermeal835","userRole":"Participant"}

我收到一条成功的警报消息,但在阅读响应时我收到错误:

XMLHttpRequest 无法加载 url Origin null 是不允许的 访问控制允许来源。

如果我通过

从命令提示符运行代码

--禁用网络安全

我正在收到回复。 任何人都可以在不使用命令提示符的情况下帮助我解决这个问题。 下面的代码。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script type="text/javascript" src="Scripts/jquery-1.4.2.min.js"></script>

<script>
$(document).ready(
    function() {
        $("#jsonpbtn2").click(function() {
            var uid = "clevermeal835";
            var pwd = "Welcome_1";
            var userType = "participant";
            var surl="http://localhost:8080/RESTlet_WS/MobiSignIn/{\"userName\":\""+uid+"\",\"password\":\""+pwd+"\",\"userType\":\""+userType+"\"}/";

$.ajax({
    type : 'GET',
    contentType: "application/json; charset=utf-8",
    url : surl,
    dataType : 'json',
    headers : {Accept : "application/json","Access-Control-Allow-Origin" : "*"},
    crossDomain : true,
    success :SucceedFunc ,
    error : function(data, textStatus, errorThrown) {
        console.log("error"+' '+JSON.stringify(data) + textStatus  + errorThrown);}
    });

function SucceedFunc(data) {
    alert("success");
    var userName = data.userName;
    alert(userName);
    }
});
});
</script> 
</head>
<body>
<input id="jsonpbtn2" type="submit" value="button" />
</body>
</body>
</html>

【问题讨论】:

  • 您是否通过在 Chrome 中通过file:// 提供网页来测试您的网站?您应该从您的网络服务器提供服务。

标签: javascript jquery ajax html


【解决方案1】:

您似乎正在通过在 Chrome 中通过 file:// 提供您的网页来测试您的网站。出于安全原因,Chrome 不允许您从 file:// 资源执行 Ajax 调用。

这里的安全威胁是有人可以通过电子邮件向您发送.html 文件,当使用file:// 打开该文件时,会发出 Ajax 请求以获取您的电子邮件收件箱(如果允许查询网页)或其他文件的内容在您的计算机上(如果允许查询其他文件资源)。

您应该改为通过提供 API 页面的同一 localhost:8080 服务器来测试您的页面。

【讨论】:

  • 得到同样的错误.. Origin 'localhost:63342' 因此不允许访问。响应的 HTTP 状态代码为 405。我在节点服务器中启用了 CORS
【解决方案2】:

尝试添加:

beforeSend: function( xhr ) {
     xhr.overrideMimeType( 'text/plain; charset=UTF-8' );
}

到您的 Ajax 调用。

【讨论】:

    猜你喜欢
    • 2012-06-07
    相关资源
    最近更新 更多