x-www-form-urlencoded在postman中工作,但在fetch中使用dotnetcore ASP.net对JWT令牌的身份验证做出反应js

时间:2018-04-10 06:15:40

标签: authentication .net-core

自一周以来,我面临同样的问题。我已经尝试了很多东西来解决它:( 既然它是实际的,任何人都可以帮助我解决为什么我无法使用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);
  })

由于

0 个答案:

没有答案