gpt4 book ai didi

jquery - 如何修改我的 Web API 服务器代码以添加 Access-Control-Allow-Origin' header ?

转载 作者:行者123 更新时间:2023-12-01 03:13:20 26 4
gpt4 key购买 nike

我有一个 Web API 应用程序,并且能够使用 Windows 表单实用程序调用其 REST 方法;我也想从 HTML/jQuery 实用程序中调用它们,并尝试按照 this tutorial 进行操作。 .

我发现信息表明我需要以某种方式在服务器端添加一个指令来允许这种类型的调用,例如来自 here .

...但不确切知道我需要添加什么以及在哪里才能使其正常工作。

我在浏览器控制台(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 窗体应用程序调用这些方法,但可以从浏览器调用这些方法 - whammo!

更新

我尝试在评论中提供的链接中执行必要的第一件事,尝试将 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”会导致“未找到项目”。

最佳答案

来自here ,我发现使用 ASP.NET MVC/Web API 有一些简单的方法。

对于 ASP.NET Web API

using System;
using System.Web.Http.Filters;

public class AllowCrossSiteJsonAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
if (actionExecutedContext.Response != null)
actionExecutedContext.Response.Headers.Add("Access-Control-Allow-Origin", "*");

base.OnActionExecuted(actionExecutedContext);
}
}

现在您已经定义了 AllowCrossSiteJson 操作过滤器属性的含义。剩下的只是将操作过滤器属性添加到您选择的 Controller 或方法中。

标记整个 API Controller :

[AllowCrossSiteJson]
public class ValuesController : ApiController
{

或单独的 API 调用:

[AllowCrossSiteJson]
public IEnumerable<PartViewModel> Get()
{
...
}

您还可以将 CORS 实现限制为您选择的受信任站点。您只需将 "*" 更改为 "http://your-domain.com,http://your-domain-2.com" 等即可。请注意逗号分隔以及在源规范中包含协议(protocol)(http://或 https://)。如果您提供本地主机,请确保包含端口号。

希望有帮助! :)

关于jquery - 如何修改我的 Web API 服务器代码以添加 Access-Control-Allow-Origin' header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21561121/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com