This question already has answers here:
XMLHttpRequest cannot load XXX No 'Access-Control-Allow-Origin' header
                                
                                    (8个答案)
                                
                        
                                2年前关闭。
            
                    
我想调用一个发布休闲JSON的API:

    "user": {
        "username": "username",
        "password": "pass",
        "password_confirmation": "passconfirm",
        "user_type": "admin"
    },
    "profile": {
        "first_name": "firstname",
        "last_name": "lastname"
    }


它在Postman,Android和Python上都很好用,但是不幸的是,当我使用以下代码测试Javascript时:

function sendData() {
/*
    get json value from HTML form.
*/
    var firstname = document.forms["registerForm"]["first_name"].value;
    var lastname = document.forms["registerForm"]["last_name"].value;
    var pass = document.forms["registerForm"]["password"].value;
    var passconfirm = document.forms["registerForm"]["password_confirmation"].value;
    var username = document.forms["registerForm"]["username"].value;

    var json_date = {
        "user": {
            "username": username,
            "password": pass,
            "password_confirmation": passconfirm,
            "user_type": "admin"
        },
        "profile": {
            "first_name": firstname,
            "last_name": lastname
        }
    };

    var data = JSON.stringify(json_date);
    console.log(json_date);
    var xhr = new XMLHttpRequest();
    xhr.withCredentials = true;

    xhr.addEventListener("readystatechange", function () {
        if (this.readyState === 4) {
            console.log(this.responseText);
        }
    });

    xhr.open("POST", send);
    xhr.setRequestHeader("content-type", "application/json");

    xhr.send(data);

}


我收到此错误:


  原因:CORS hejquery“访问控制允许来源”缺失


我用console.log()打印json文件,然后看到了json文件。

但不会发送到服务器。

我也尝试过使用jQuery。

我必须添加此注释,该服务器已使用RubyOnRails编写。

最佳答案

发生这种情况是由于CORS(跨原始资源共享)


  跨域资源共享(CORS)是一种机制,它使用其他HTTP标头来使用户代理获得从与当前使用的站点不同的源(域)上的服务器访问选定资源的权限。


例如,如果要获取存储在http://foo.com上的资源,该资源从http://bar.com发送请求,则应在响应中添加Access-Control-Allow-Origin: *标头。

来源:Server-Side Access Control (CORS)Cross-Origin Resource Sharing (CORS)

关于javascript - 我的JavaScript API无法用于“缺少Access-Control-Allow-Origin”错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47111472/

10-15 00:01