我正在使用config.EnableCors()
在webapi中进行cors处理。
它可以正常工作并加载网站,但有时导航到其他页面时会出现cors错误。
OPTIONS http://localhost:54234/api/questions 405 (Method Not Allowed)
edit:1 Access to XMLHttpRequest at 'http://localhost:54234/api/questions' from origin 'http://localhost:4200' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.
有人可以帮忙吗?
答案 0 :(得分:0)
在Web API中启用CORS时遇到类似的问题。我尝试了几种不同的方法,但它们部分解决了该问题。
这是我解决的方法(不确定当时在哪里读到该解决方案):
将以下配置添加到Web配置文件; some_address应该替换为访问Web API的地址。如果您有多个地址,请用';'分隔。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="CorsOriginsSetting" value="http://localhost:54323" />
</appSettings>
</configuration> />
将以下代码添加到您的Web API项目:
using System.Configuration;
using System.Threading.Tasks;
using System.Web.Cors;
using Microsoft.Owin.Cors;
using Owin;
namespace MyWebAPI
{
public partial class Startup
{
public void ConfigureCors(IAppBuilder app)
{
var corsPolicy = new CorsPolicy
{
AllowAnyMethod = true,
AllowAnyHeader = true,
};
var origins = ConfigurationManager.AppSettings["CorsOriginsSetting"];
if (origins != null)
{
foreach (var origin in origins.Split(';'))
{
corsPolicy.Origins.Add(origin);
}
}
else
{
corsPolicy.AllowAnyOrigin = true;
}
var corsOptions = new CorsOptions
{
PolicyProvider = new CorsPolicyProvider
{
PolicyResolver = context => Task.FromResult(corsPolicy),
}
};
app.UseCors(corsOptions);
}
}
}
并调用它:
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
//..
ConfigureCors(app);
//..
}
}
希望这会有所帮助。
欢呼和快乐的编码!