从其他域和计算机发布的 Web API 帖子

Web API Post from other domain and computers

本文关键字:Web API 帖子 其他 计算机      更新时间:2023-09-26

我创建了一个新的基于Web-API的 asp.net。

如果我理解正确,您不能从其他域发布/获取。

我需要把这个 Web API 提供给我的朋友,他们使用 php/javascript/andriod/iphone,并能够允许他们 POST/GET 访问我的 Web API。

有没有办法使用用户/密码或类似的东西来获取 POST/GET?

注意我假设您使用的是webapi 2.2

这就是我要做的。 首先,按照本教程在 web api 中创建个人帐户:

http://www.asp.net/web-api/overview/security/individual-accounts-in-web-api

这将允许您的用户使用您的 api 注册,并将安全地存储凭据。然后,可以在控制器或单个方法上使用"授权"属性(具体取决于要实现的目标)。

注册用户后,可以通过传入用户名和密码从令牌终结点请求访问令牌(在生产环境中确保使用 https)。收到令牌后,可以存储此客户端,并将其与请求的标头一起发送。

以此类推,直到 CORS。完成上述操作后,您可以通过执行以下操作将服务器设置为允许来自任何来源的所有跨域,使用 和 动词:

使用 nuget 包管理控制台发出以下命令:

Install-Package Microsoft.Owin.Cors -Version 2.1.0

在启动类(通常为 Startup.cs)中添加以下行:

 app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);

如果要更具选择性,可以创建自己的自定义策略。

注意:值得注意的是,浏览器只会在请求不简单的情况下发出预审请求(选项)。不简单的请求定义如下:

  • 它使用 GET、HEAD 或 POST 以外的方法。 另外,如果使用开机自检发送内容类型不是的请求数据application/x-www-form-urlencoded, multipart/form-data, or文本/纯文本,例如,如果 POST 请求将 XML 有效负载发送到服务器使用应用程序/XML 或文本/XML,则请求是预检。

  • 它在请求中设置自定义标头(例如,请求使用诸如 X-PINGOTHER 之类的标头)

(更多信息见此处:https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS)

应该就是这样了。

祝你好运。

for .NET Web API

set WebAPI basic authentications.
Articles in this issue 

http://www.asp.net/web-api/overview/security/basic-authentication

设置"WebAPI 允许跨域"。 本期
的阿里克尔斯http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api

示例 获取 javascript AJAX 添加此行

beforeSend: function (xhr) {
    xhr.setRequestHeader ("Authorization", "Basic "+btoa(username + ':'+password);
},

BTOA图书馆 https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/btoa