我有一个 Web API 应用程序,并且能够使用 Windows 窗体实用程序调用其 REST 方法;我也想从 HTML/jQuery 实用程序中调用它们,并尝试按照本教程 http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-%20first-web-api.
我发现信息表明我需要以某种方式在服务器端添加一个指令,允许这种类型的调用,例如来自here https://stackoverflow.com/questions/20035101/no-access-control-allow-origin-header-is-present-on-the-requested-resource-w.
...但不确切知道我需要添加什么以及在哪里才能使其发挥作用。
我在浏览器控制台(Chrome 中)中收到的具体消息是:
XMLHttpRequest cannot load http://localhost:28642/api/VendorItems/GetAll. No 'Access-
Control-Allow-Origin' header is present on the requested resource. Origin
'http://localhost:54161' is therefore not allowed access.
我还尝试用我的机器名和 IP 地址替换调用“localhost”,但它们都会导致相同的错误消息。
无论如何,这很奇怪/我有点敬畏,我可以毫无问题地从 Windows 窗体应用程序调用这些方法,但可以从浏览器调用这些方法 - 哇哦!
UPDATE
我尝试在评论中提供的链接中执行必要的第一件事,尝试将 Cors 包安装到我的 Web API/服务器应用程序中,但失败了:
PM> Install-Package Microsoft.AspNet.WebApi.Cors -pre -project WebService
Install-Package : No compatible project(s) found in the active solution.
At line:1 char:1
+ Install-Package Microsoft.AspNet.WebApi.Cors -pre -project WebService
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Install-Package], InvalidOperationException
+ FullyQualifiedErrorId : NuGetNoCompatibleProjects,NuGet.PowerShell.Commands.InstallPackageCommand
PM>
...并在 NuGet GUI 中搜索在线包“Microsoft.AspNet.WebApi.Cors”会导致“未找到项目”。