我有一个ASP.NET Web API项目。我在所有浏览器中都收到500 Internal Server Error错误。
我安装了Microsoft.AspNet.WebApi.Cors -Version 5.2.7
并将Web API配置文件中的配置设置为
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
var enableCorsAttribute = new EnableCorsAttribute("*", "*", "GET, PUT, POST, DELETE, OPTIONS");
config.EnableCors(enableCorsAttribute);
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
var jsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter>().First();
jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
}
}
何时我将调用URL /令牌登录以获取cors起源错误 我与邮递员测试并获得令牌 但是在浏览器中我得到了错误
我在chrome浏览器的“网络”标签中看到响应标头包含原始内容
我使用Chrome扩展程序向请求添加标头,但再次出现错误。我加了
[EnableCors(origins: "*", headers: "*", methods: "*")]
对所有控制器来说,但这还不行。
我从链接中使用过,但是我得到了错误的cors来源:
dzone cors origin learn cors origin in web api
// --------------------------------------------- ------- 经过大量的努力,我添加了
public class OptionsModule : IHttpModule
{
public void Init(HttpApplication context)
{
context.BeginRequest += (sender, args) =>
{
var app = (HttpApplication)sender;
if (app.Request.HttpMethod == "OPTIONS")
{
app.Response.StatusCode = 200;
app.Response.AddHeader("Access-Control-Allow-Headers", "content-type,accept");
app.Response.AddHeader("Access-Control-Allow-Origin", "*");
app.Response.AddHeader("Access-Control-Allow-Credentials", "true");
app.Response.AddHeader("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE,PATCH,OPTIONS");
app.Response.AddHeader("Content-Type", "application/json");
app.Response.AddHeader("Accept", "application/json");
app.Response.End();
}
};
}
public void Dispose()
{
}
}
和web.config
<system.webServer>
<modules>
<add name="HandleOptions" type="Satek.WebApi.New.Helper.OptionsModule" />
</modules>
现在我的网站在IE和Edge中打开 但在Chrome版本74.0.3729.157(官方内部版本)(64位)中 我收到错误
CORS策略已阻止从来源“ http://localhost:13052/token”访问“ http://localhost:4200”处的XMLHttpRequest:在飞行前响应中,Access-Control-Allow-Headers不允许请求标头字段授权。 / p>
和在网络标签Chrome中
Request URL: http://localhost:13052/token
请求方法:OPTIONS 状态码:200 OK 远程地址:127.0.0.1:8888 推荐人政策:降级时不推荐人 接受:application / json 访问控制允许凭据:true 访问控制允许标题:内容类型,接受 允许访问控制的方法:GET,PUT,POST,DELETE,PATCH,OPTIONS 访问控制允许来源:* 内容长度:0 内容类型:application / json 日期:2019年5月23日星期四06:30:17 GMT 服务器:Microsoft-IIS / 10.0 X-Powered-by:ASP.NET X源文件:=?UTF-8?B?RTpcUmVwb3NpdG9yeVxTYXRlay5XZWJBcGkuTmV3XFNhdGVrLldlYkFwaS5OZXdcdG9rZW4 =?= 显示临时标题 访问控制请求标头:授权,内容类型 访问控制请求方法:POST 来源:http://localhost:4200 推荐人:http://localhost:4200/auth/login 用户代理:Mozilla / 5.0(Linux; Android 6.0; Nexus 5 Build / MRA58N)AppleWebKit / 537.36(KHTML,例如Gecko)Chrome / 74.0.3729.157移动Safari / 537.36