【问题标题】:Sending Token and Value in browser to Web api将浏览器中的令牌和值发送到 Web api
【发布时间】:2017-07-18 15:45:43
【问题描述】:

使用 Postman,我可以执行 Get 并发送 Auth-Token 作为 Header key ,然后发送一个类似 Z4TTHmY98=gFw2rG 的值,然后它会很好地进入 web api 方法,因为它会根据自定义属性进行检查。

但是,我想用浏览器

这是命中的api

http://localhost:29001/api/test  

我的标头密钥 = Auth-Token
我的标头值 = Z4TTHmY98=gFw2rG

在阅读了一些文章之后,我认为这会起作用,但是在逐步调试 web api 方法时 header 为空。

浏览器不可以吗?如果有,怎么做?

http://localhost:29001/api/test?Auth-Token=Z4TTHmY98=gFw2rG

【问题讨论】:

  • 在控制器中接收令牌作为字符串参数?
  • public ActionResult Test(string AuthToken) 应该在没有破折号的情况下使用默认路由设置

标签: c# authentication asp.net-web-api authorization token


【解决方案1】:

浏览器打开页面不发送自定义标题。但是您可以使用您需要的自定义标头发送 AJAX 请求。以下示例使用jQuery.ajax

$.ajax({
  url: '/api/test',
  headers: { 'Auth-Token': 'Z4TTHmY98=gFw2rG'}
});

更新

如果您想通过您的页面为每个 AJAX 请求发送相同的标头,您可以使用ajaxSetup + beforeSend

$.ajaxSetup({
    beforeSend: function(xhr) {
        xhr.setRequestHeader('Auth-Token', 'Z4TTHmY98=gFw2rG');
    }
});

【讨论】:

  • 那很好-希望浏览器可以做到,我会使用邮递员,然后当然也会使用客户端thx
【解决方案2】:

使用 Webapi 2 参数绑定。

您可以通过如下浏览器拨打电话

 http://localhost:29001/api/test/Z4TTHmY98=gFw2rG/

[HttpGet]
[Route("/test/{AuthToken}")
public IHttpActionResult Test([FromUri] string AuthToken) 
{
    //Do whatever you want to do.
}

小心路线。它需要正确并在webapiconfig中配置。

【讨论】:

  • 我知道如何为此设置Web Api,我想知道如何在浏览器中发送url
  • 当然 - 我可以发送 URL,问题是它在标题中发送是有原因的,我只是希望浏览器能够发送,但这没什么大不了的。这当然是一种创造性的方式,但是我必须更改 web api 路由和方法,然后整个在数据库中搜索键/值对的高级授权类都不在画面中,因为关键是要真正拥有松散耦合/关注点分离 - 这将迫使 api 控制器进入安全协议握手,这不是我的应用程序的工作方式,不允许使用 web api 方法
【解决方案3】:

页面的AJAX请求可以使用ajaxSetup + beforeSend:

$.ajaxSetup({
    beforeSend: function(xhr) {
        xhr.setRequestHeader('Auth-Token', 'Z4TTHmY98=gFw2rG');
    }
});

信息

如果你想用相同的方式调用第三方API,那么你可以像这样使用

objHttpClient.DefaultRequestHeaders.TryAddWithoutValidation("Key", "value");
objHttpClient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", "zMXGa8WNQuaBxWazgUhO2dw=");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-31
    • 2020-12-24
    • 1970-01-01
    • 2019-02-19
    • 2015-03-04
    • 1970-01-01
    • 2019-04-05
    相关资源
    最近更新 更多