Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Vue.js获取抛出404和api响应_Javascript_Vue.js - Fatal编程技术网

Javascript Vue.js获取抛出404和api响应

Javascript Vue.js获取抛出404和api响应,javascript,vue.js,Javascript,Vue.js,我无法在Vue.js中发出POST请求。它给了我CORS的问题,但我补充道 header('Access-Control-Allow-Origin: *'); header("Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE"); 然后他们就离开了。我可以使用Postman从API获得有效响应,同时使用相同的电子邮件和密码Postman忽略CORS 这是我的取回请求: <script> export defa

我无法在Vue.js中发出POST请求。它给了我CORS的问题,但我补充道

header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE");
然后他们就离开了。我可以使用Postman从API获得有效响应,同时使用相同的电子邮件和密码Postman忽略CORS

这是我的取回请求:

<script>
export default {
data () {
    return {}
},
methods : {
    login : function () {
        console.log('Logging in');
        // axios({
        //     method : 'post',
        //     url : 'https://www.example.com/login',
        //     headers : {'content' : 'application/json'},
        //     data : {
        //         email : 'emailHere',
        //         password : 'passwordHere'
        //     }
        // })
        // .then(function (response) {
        //     console.log(response);
        // })
        // .catch(function (error) {
        //     console.log(error);
        // });

        fetch('https://www.example.com/login', {
            method: 'POST',
            body: JSON.stringify({
                email : 'emailHere',
                password : 'passwordHere'
            })
        })
        .then((res) => res.json())
        .then((data) => console.log(data))
        .catch((err) => console.error(err))

    }
}
}
</script>

https://www.example.com/api/v1/authenticate/login 404 (Not Found)
{status: false, message: "Invalid credentials"}
我尝试了Axios,但仍然给出了404,但不是无效凭据响应

在其他应用程序中,我成功地将jQuerysAjax与相同的API一起使用,因此该API似乎允许javascript请求。但是Fetch和Axios不喜欢它

我有一个Login.vue组件,它有一个按钮

<a id="login-btn" @click.prevent="login">{{ $t('loginPage.loginButtonText') }}</a>
任何帮助都将不胜感激!谢谢

您缺少内容类型标题。尝试在请求中设置标题。Fetch要求您显式设置头,因为它是一个低级API。您的服务器可能会拒绝,因为它无法识别适当的内容类型。试试这个:

fetch('https://www.example.com/login', {
    method: 'POST',

    // THIS IS IMPORTANT
    headers: new Headers({
         'Content-Type': 'application/json',
         'Accept': 'application/json',
    }),

    body: JSON.stringify({
        email : 'emailHere',
        password : 'passwordHere'
    })
})
此外,请记住fetch的两件事:

首先使用fetch获取404并不意味着您的请求失败。如果服务器响应4xx或5xx错误,则认为获取成功。只有出现网络错误时,才会拒绝提取。所以,如果您得到404,这意味着请求已到达服务器,但客户端存在问题


第二,尝试将模式设置为cors。虽然mode的默认值是cors。

谢谢您的回复!我分别和一起尝试了,给出了不同的响应,但仍然是404。它按预期工作,并返回一个带有数据的响应。$。ajax{url:,键入:'post',数据:{email:'emailHere',密码:'passwordHere'},成功:functionresult{console.logresult;};这是你建议的答复。加载失败:飞行前响应的HTTP状态代码404无效。TypeError:提取失败。@BrianBarton,这很奇怪。需要想想为什么会发生这种情况。还有其他想法吗?