Axios:如何获取两个请求 OPTIONS 和 POST

35

我正在尝试发布数据。一切都运行正常,但我不知道为什么会收到两个请求OPTIONSPOST

POST: 输入图像描述

OPTIONS: 输入图像描述

这是代码:

const url = 'http://rest.learncode.academy/api/johnbob/myusers';

export function postUsers(username, password) {
    let users = {
        username,
        password,
    };
    return{
        type: "USERS_POST",
        payload: axios({
            method:'post',
            url:url,
            data: users,
        })
            .then(function (response) {
                console.log(response);
            })
            .catch(function (error) {
                console.log(error);
            })
    }
}

跨源资源共享(CORS) - zerkms
2
请参考以下链接,其中包含有关axios库的问题和解决方案:https://github.com/axios/axios/issues/475 - Andy Ray
1个回答

53

使用AJAX进行的非简单CORS请求需要进行预检。可以在这里了解更多相关信息。这是浏览器的行为,与axios无关。这种行为本质上没有问题,如果它对你有用,你可以保持不变。

如果你坚持要摆脱它,有几种方法可以尝试:

  1. 你可以在服务器上设置Access-Control-Allow-Origin: *来禁用CORS。

  2. 将CORS请求修改为简单请求。你需要将Content-Type标头更改为application/x-www-form-urlencodedmultipart/form-datatext/plain。而非application/json

如果OPTIONS请求没有阻塞你,建议保持原样。


1
好的,注意到了。修正了措辞。 - Yangshun Tay
1
嗨,永顺,你的答案很棒。 - Vikash Chauhan
3
我理解你的意思,但是将 Access-Control-Allow-Origin: * 设置为“禁用CORS”是不正确的表述,它实际上是允许来自任何地方的CORS请求。 - So You're A Waffle Man
谢谢!"Content-Type": "text/plain"非常有效。 - Maximilian Lindsey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接