自一周以来,我面临同样的问题。我已经尝试了很多东西来解决它:( 既然它是实际的,任何人都可以帮助我解决为什么我无法使用fetch调用我的API但能够使用postman调用它的问题?
下面是我的代码供进一步参考,我在服务器端启用了CORS,我已经创建了我的API。 API构建在ASP dotnet核心中。
如果我尝试使用postman调用该API而不是使用相同的参数但是它不能使用fetch,那么API和react项目都在我的localhost中运行,
注意:如果我在我的API中设置了[AllowAnonymous],那么它会按照预期给我回复,并且与邮递员一样。 但我想要的功能必须通过客户端传递的密钥进行身份验证,然后将JWT令牌返回给客户端。
我现在累了,请帮助我,如果有人有相同的解决方案。
var param={
grant_type: 'password',
username: 'username',
password: 'password'
};
var formData = [];
for (var property in param) {
var encodedKey = encodeURIComponent(property);
var encodedValue = encodeURIComponent(param[property]);
formData.push(encodedKey + "=" + encodedValue);
}
formData = formData.join("&");
let headers2 = new Headers();
headers2.append('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');
headers2.append('AuthServerKey', 'AUTHENTICATIONKEY');
fetch(URL, {
mode:'cors',
method: 'post',
withCredentials: true,
crossdomain: true,
headers: headers2,
body: formData
}).then(function(response) {
alert(response);
if (response.status >= 400) {
throw new Error("Bad response from server");
}
response.json().then(function(data) {
console.log(data);
});
//console.log(response);
//return response.json();
}).catch(err => {
console.log('caught it!',err);
})
由于