关于javascript:Access-Control-Allow-Origin不允许使用Origin null

Origin null is not allowed by Access-Control-Allow-Origin

本问题已经有最佳答案,请猛点这里访问。

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

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

XMLHttpRequest cannot load the url Origin null is not allowed by
Access-Control-Allow-Origin.

如果我从命令提示符运行代码

--disable-web-security

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script type="text/javascript" src="Scripts/jquery-1.4.2.min.js">


$(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);
    }
});
});
 
</head>
<body>
<input id="jsonpbtn2" type="submit" value="button" />
</body>
</body>
</html>


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

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

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


尝试添加:

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

到您的Ajax调用。