gpt4 book ai didi

OWIN 上的 CORS 和访问/token 导致 'Access-Control-Allow-Origin' 错误

转载 作者:行者123 更新时间:2023-12-03 11:44:53 27 4
gpt4 key购买 nike

我在使用 owin 中间件保护我的 Web API 时遇到了麻烦。

我已经安装了下面的包

Install-Package Microsoft.Owin.Cors -Version 2.1.0

下面是 ConfigureAuth.cs 代码。
 public void ConfigureAuth(IAppBuilder app)
{
//...
app.UseOAuthBearerTokens(OAuthOptions);
///Install-Package Microsoft.Owin.Cors -Version 2.1.0
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
}

我在一个链接上托管了这个 WebApi 项目,比如, http://webaip.azurewebsites.net

我正在尝试从另一个站点访问上述 API 的 Controller 方法,例如 http://mysite.azurewebsites.net
有了上面的代码,我就可以调用所有不安全的 API 方法。 (未使用 Authorize 属性装饰)通过 javascript 我无法调用/Token 进行身份验证。下面是我的 javascript 代码。
function LogIn() {
var loginData = {
grant_type: 'password',
username: 'username',
password: 'password',
};

$.ajax({
type: 'POST',
url: 'http://webaip.azurewebsites.net/Token/',
data: loginData

}).done(function (data) {
alert('logged in');
alert(data);
}).fail(function (data) {
alert('login problem')
}).error(function (data) {
alert('error invoking API');
});
return false;
}

我得到以下错误
XMLHttpRequest cannot load http://webaip.azurewebsites.net/Token/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://mysite.azurewebsites.net' is therefore not allowed access. The response had HTTP status code 404.

注意:我也尝试使用下面的代码。它也不适合我。
public static void Register(HttpConfiguration config)
{
var json = config.Formatters.JsonFormatter;
config.Formatters.Remove(config.Formatters.XmlFormatter);
//Need to have Microsoft.AspNet.WebApi.Cors package installed.
config.EnableCors(new EnableCorsAttribute("*","*","*"));
}

最佳答案

经过数小时的搜索和查看许多不同的解决方案后,我设法按照以下方式进行工作。

发生这种情况的原因有很多。很可能您在错误的地方启用了 CORS,或者它启用了两次或根本没有启用。

如果您使用的是 Web API 和 Owin Token 端点,那么您需要删除 Web API 方法中对 CORS 的所有引用并添加正确的 owin 方法,因为 Web api cors 不适用于 Token 端点,而 Owin cors 可用于两个 Web API 和 token 身份验证端点让我们开始:

  • 确保您已安装 Owin Cors 软件包
  • 删除您拥有的任何行 eg.config.EnableCors();从你的 WebAPIconfig.cs
    文件
  • 转到您的 startup.cs 文件并确保您执行 Owin
    Cors 在任何其他配置运行之前。
        app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
    ConfigureAuth(app);
  • 如果您仍然有问题,请转到:Startup.Auth.cs 并确保您的 ConfigureAuth 方法中有以下内容(如果您的 startup.cs 文件正确,则不需要此内容)
    app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
  • 关于OWIN 上的 CORS 和访问/token 导致 'Access-Control-Allow-Origin' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26725866/

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