gpt4 book ai didi

asp.net-mvc-4 - 附加到 HTTP 响应的 CORS header 未发送到浏览器

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

我通过 HttpContext.Current 直接写入 ASP.NET MVC 中的请求 header 对象,但这些 header 没有发送到浏览器...知道什么可能导致这种情况吗?如果我通过 web.config 添加 header ,我只会获得 header 。这对我不起作用,因为我需要允许多个域 Access-Control-Allow-Origin .

我尝试将 header 直接写入 HttpContext.Current使用此代码。

context.Response.AppendHeader("Access-Control-Allow-Origin", origin);
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
context.Response.ContentType = "text/plain";
context.Response.Write("Hello World " + DateTime.Now.ToString());

我得到了 hello world,但没有得到标题。

我还尝试过使用Thinktecture.IdentityModel.Http.Cors.WebApi但得到相同的结果,这没什么。我已经检查并重新检查了我的代码,以确保它符合教程] 1 。我已经在 Web.config 中配置了 header 并尝试通过 Thinktecture 但是我仅在 Access-Control-Allow-Origin 时才获得 header 位于 web.config 中,但我在 Chrome/FF 中仍然收到错误。似乎 header 仅在 OPTIONS 请求上发送,但我不确定。

Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8,ga;q=0.6,pt-BR;q=0.4,pt;q=0.2
Access-Control-Request-Headers:accept, origin, content-type
Access-Control-Request-Method:GET
Authorization:Negotiate REDACTED
Cache-Control:max-age=0
Connection:keep-alive
Host:bpapi.domain.com
Origin:http://dev-02
Referer:http://dev-02/_Layouts/PAR/NewParItem.aspx
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.43 Safari/537.31


HTTP/1.1 200 OK
Server: Microsoft-IIS/7.5
Persistent-Auth: false
X-Powered-By: ASP.NET
Access-Control-Allow-Origin: http://dev-02
Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept
WWW-Authenticate: Negotiate REDACTED
Date: Sat, 06 Apr 2013 00:35:31 GMT
Content-Length: 0

这是web.config as a pastebin以免问题变得困惑。 WebDAV 安装。

public class CorsConfig
{
public static void RegisterCors(HttpConfiguration httpConfig)
{
WebApiCorsConfiguration corsConfig = new WebApiCorsConfiguration();

corsConfig.RegisterGlobal(httpConfig);

corsConfig
.ForResources(new string[] { "Industries", "Projects" })
.ForOrigins(new string[] { "http://dev-01", "http://dev-02" })
.AllowAll();
}
}

这是 Thinktecture 代码:

    protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();

WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
//CorsConfig.RegisterCors(GlobalConfiguration.Configuration);
RegisterCors(MvcCorsConfiguration.Configuration);
}
private void RegisterCors(MvcCorsConfiguration corsConfig)
{
corsConfig
.ForResources(new string[] {"Industries", "Projects" })
.ForOrigins(new string[] { "http://dev-01", "http://dev-02" })
.AllowAll();
}

2013/04/09 更新: 两者都不是 context.Response.AppendHeader(...)也不context.Response.AddHeader(...)有什么影响。 Chrome 和 FF 似乎没问题,如果它们获得 JSONP,无论允许原始 header 如何,所以我的项目至少可以工作。我也尝试过<remove name="OPTIONSVerbHandler"/>没有成功。我将把 MVC 应用程序部署到新服务器,看看它是否是针对特定计算机的本地化内容。

最佳答案

也许,您的麻烦是由于 OPTIONSVerbHandler 造成的。详情请参阅此链接:
http://eugeneagafonov.com/post/38312919044/iis-options-cors-aspnet-webapi-en

关于asp.net-mvc-4 - 附加到 HTTP 响应的 CORS header 未发送到浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15845869/

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