Access-Control-Allow-Origin不允许使用null

时间:2012-08-21 10:01:07

标签: javascript jquery ajax html5

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

我收到一条警报信息表示成功,但在阅读回复时我收到错误:

  

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

如果我通过

从命令提示符运行代码
  

- 禁用-web的安全

我得到了回应。     任何人都可以使用命令提示符帮助我解决此问题。      以下代码。

<!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>

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:-1)

尝试添加:

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

到你的Ajax电话。