JavaScript - API请求(Access-Control-Allow-Origin错误)

时间:2018-05-21 11:53:27

标签: javascript php json api fetch

负责API请求的人一周都没有了,所以在服务器端无法做任何事情。

fetch("https://url.com/api/login/", {
    method: "post",
    headers: {
        // 'Accept': 'application/json',
        'Content-Type': 'application/x-www-form-urlencoded'
    },
    body: JSON.stringify({
        username: "test@mail.com",
        password: "123"
    })
}).then(function (response) {
    return response.json();
}).then(function (myJson) {
    console.log(myJson);
});

它适用于Postman,但正如我所听到的,Postman并没有遵循与浏览器相同的安全性,因此这对Postman来说不是一个问题。但我怀疑是这种情况,因为作者php-solution工作正常。

这是一个有效的PHP解决方案的例子(他写的):

    function login($username, $password) {
        $curl = curl_init(); curl_setopt_array($curl, array(
            CURLOPT_URL => "https://url.com/api/login/",
            CURLOPT_POST => true,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_FOLLOWLOCATION => false,
            CURLOPT_TIMEOUT => 30,
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_POSTFIELDS => "username=".$username."&password=".$password,
            CURLOPT_HTTPHEADER => array(
                "cache-control: no-cache",
                "content-type: application/x-www-form-urlencoded"),
        ));

        $response = curl_exec($curl);
        curl_close($curl);
        $authdata = json_decode($response);
        if ($authdata -> success) {
            //success
            return true;
        } else {
            //fail
            return false;
        }
    }

我的代码中缺少什么?我怎样才能让它像他的php解决方案一样工作。 (没有PHP经验。)

非常感谢任何帮助。

编辑:

对邮递员有用的是什么:

  • Body中的原始json格式。
  • Key
  • 中添加Valuex-www-form-urlencoded的值

1 个答案:

答案 0 :(得分:0)

要解决此错误,您可以执行以下三项操作:

  1. 添加您的原始服务器端。
  2. 在同一个域上运行您的javascript。
  3. 检查this答案是否在Chrome中禁用了相同的来源政策。这将允许您测试代码,直到负责de API的人返回。