我在Axios上使用Vue JS 2.5:
"vue": "^2.5.17",
"vue-axios": "^2.1.4",
"axios": "^0.18.0",
我想打一个像这样的电话:
const data = querystring.stringify({
'email': email,
'password': password,
'crossDomain': true, //optional, added by me to test if it helps but it doesn't help
});
var axiosConfig = {
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
// "Access-Control-Allow-Origin": "*",
'Accept': '*',
}
};
axios.post(url, data, axiosConfig)
.then((response) => {
console.log('response');
console.log(response);
})
.catch((error) => {
console.log('error');
console.log(error);
});
我也尝试过不使用“axioconfig”参数。但每次它进入catch时,都会显示一条消息:Error:networkerror
在浏览器的网络选项卡中,我得到了200个状态和良好的响应(使用有效的json),它基本上可以工作,但Axios返回错误,没有响应。
控制台还输出以下警告:跨源请求被阻止:同一源策略不允许读取远程资源https://url/api/page. (原因:缺少CORS标题“访问控制允许原点”。
我试着从邮递员那里打同样的电话,效果很好。不同的是Axios用我的localhost:8080发送标题:“起源”和“引用者”,这不同于我调用的应用编程接口网址。
如何从axios拨打此电话而不出现此错误?谢谢
编辑
如果我使用的是PHP,它会工作:
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://myurl",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "------WebKitFormBoundaryTrZu0gW\r\nContent-Disposition: form-data; name=\"email\"\r\n\r\nemail\r\n------WebKitFormBoundaryTrZu0gW\r\nContent-Disposition: form-data; name=\"password\"\r\n\r\npassword\r\n------WebKitFormBoundaryTrZu0gW--",
CURLOPT_HTTPHEADER => array(
"Postman-Token: 62ad07e5",
"cache-control: no-cache",
"content-type: multipart/form-data; boundary=----WebKitFormBoundaryTrZu0gW",
"email: email",
"password: password"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
我只是复制粘贴了生成的邮递员呼叫,并从另一个页面尝试了它,效果很好。所以这不是CORS的问题,而是我的Javascript调用的问题。
您需要在API上启用CORS,您使用的是哪种语言/框架?
这里有一些参考:
https://enable-cors.org/
我希望根据角色限制的使用:/。 因此,我试图使用实现(出于测试目的),但问题是: 所有endpoint返回status,并且对约束不响应为。 澄清一下:我想作为登录,并因为而得到错误: 我测试了配置的格式: 基于示例配置。 在调查过程中,我试着发表评论,例如: 我尝试在Postman中清除cookies,以用户身份登录,但仍然得到。 只有当我不在Postman中使用请求时,我才会获得: UPD#2
我想知道当服务器端发生错误时返回是否正确(错误详细信息将包含在响应主体中)。 例子: 我们正在发送 这是不是正确的行为?我们是否应该将状态代码更改为200以外的值?
下面是我正在使用的一段代码: 期望reponse conatins的状态行:“HTTP/1.1400坏请求”想知道这是可以实现的吗?如果是,那么我如何继续做同样的事情。
问题内容: 这真让我感到困惑。我收到来自Ajax的错误回调。但是,如果我从错误消息中获取res.responseText(返回正确,顺便说一句)并使用它,则它做对了。就像我收到了成功的回调一样。 数据设置如下: 和ajax调用是这样的: 错误消息是:发生错误:。 问题答案: 如果您的responseText不是正确的JSON,则会引发解析错误。无论是 确保你的反应是一个有效的JSON 或 删除。
角度http调用: 回答 不使用代码格式化,因为在没有它的情况下阅读是非常困难的。 错误HttpErrorResponse httpclient默认返回响应的json,这是我正在积极研究的问题。但我不知道如何解决这个问题。
我最近参加了一个新项目。在这个项目中,所有正在使用的API总是返回状态代码200。即使响应应该是400或404,API也会返回状态代码200。 我问API为什么不返回其他响应代码,程序员告诉我他们不使用响应代码。他们把信息放在身体里。 例如,缺少一些必填字段,它们返回响应状态代码200,但正文返回如下 如果未经授权的用户试图访问,状态代码为200,身体像这样返回 我以前做的是非常不同的,我总是通过