我的javascript api不适用于"Access-Control-Allow-Origin’ missing"错误



我想调用一个发布休仓 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'Access-Control-Allow-Origin' 缺失

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

但不发送到服务器。

我也尝试过jQuery。

我必须补充一点,服务器是用RubyOnRails编写的。

这是因为 CORS(跨源资源共享)而发生的

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

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

来源:服务器端访问控制 (CORS) 和跨域资源共享

相关内容

最新更新