相关疑难解决方法(0)

'Access-Control-Allow-Origin'标头包含多个值

我在客户端使用AngularJS $ http访问服务器端ASP.NET Web API应用程序的端点.由于客户端作为服务器托管在不同的域上,因此我需要CORS.它适用于$ http.post(url,data).但是只要我通过$ http.get(url)对用户进行身份验证并发出请求,我就会收到消息

The 'Access-Control-Allow-Origin' header contains multiple values 'http://127.0.0.1:9000, http://127.0.0.1:9000', but only one is allowed. Origin 'http://127.0.0.1:9000' is therefore not allowed access.

Fiddler告诉我,在成功的选项请求之后,get请求中确实有两个头条目.我做错什么地方在哪里?

更新

当我使用jQuery $ .get而不是$ http.get时,会出现相同的错误消息.所以AngularJS似乎没有问题.但哪里错了?

cors asp.net-web-api angularjs-http

93
推荐指数
7
解决办法
19万
查看次数

处理对ASP.NET MVC操作的CORS预检请求

我正在尝试对ASP.NET MVC控制器操作执行跨域POST请求.此控制器操作接受并使用各种参数.问题是,当预检请求发生时,控制器操作实际上会尝试执行,因为OPTIONS请求没有传递任何数据,控制器操作会抛出500 HTTP错误.如果我删除使用该参数的代码或参数本身,则整个请求链成功完成.

这是如何实现的一个例子:

控制器动作

public ActionResult GetData(string data)
{
    return new JsonResult
    {
        Data = data.ToUpper(),
        JsonRequestBehavior = JsonRequestBehavior.AllowGet
    };
}
Run Code Online (Sandbox Code Playgroud)

客户端代码

<script type="text/javascript">
        $(function () {
            $("#button-request").click(function () {
                var ajaxConfig = {
                    dataType: "json",
                    url: "http://localhost:8100/host/getdata",
                    contentType: 'application/json',
                    data: JSON.stringify({ data: "A string of data" }),
                    type: "POST",
                    success: function (result) {
                        alert(result);
                    },
                    error: function (jqXHR, textStatus, errorThrown) {
                        alert('Error: Status: ' + textStatus + ', Message: ' + errorThrown);
                    }
                };

                $.ajax(ajaxConfig);
            });
        });
    </script> …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc cors

50
推荐指数
4
解决办法
4万
查看次数

IIS劫持了CORS Preflight OPTIONS请求

我正在进行CORS POST请求并将Content-Type标头设置为json.这会触发Preflight OPTIONS请求触发(这很好并且预期)

此OPTIONS请求以200 OK响应,但这不是来自我的WebAPI应用程序.

我有一个自定义的消息处理程序,它永远不会受到影响,因此在看到ASP.NET之前,IIS会响应请求.

我找到了几个关于这个主题的帖子,他们说了以下内容

  1. 确保卸载/删除/禁用WebDav - 完成

  2. 确保删除/更改OPTIONSVerbHandler以使用aspnet_isapi.dll - 同时尝试

  3. 确保extensionlessURLHandler包含OPTIONS动词 - DONE

但是,我的选项请求仍然被劫持.我的意思是,IIS以200 OK响应,但在响应中不包括Access-Control-Allow-Origin标头.它不包括此标头,因为它永远不会到我设置此标头的WebAPI CORS代码.

我能找到的两个最好的帖子听起来像是我的问题

这里:JQuery坚持CORS预检和IIS幽灵响应

在这里:http://brockallen.com/2012/10/18/cors-iis-and-webdav/

我尝试在IIS中打开失败请求跟踪(FERB)并将其设置为跟踪所有200个状态代码.我没有看到选项请求被记录...不确定这是否意味着FERB不跟踪OPTIONS请求或者我是否需要更改FERB设置中的某些内容以使其跟踪OPTIONS请求,或者如果这是一条线索我的问题是什么?

这是在IIS 7.5上运行的ASP.NET WebAPI 2.0(也在IIS 8和IISExpress上测试,结果相同)无论什么浏览器(Chrome,FF和IE都以相同的方式失败)

我已经尝试了我能找到的关于这个主题的所有内容,仍然无法解决我的问题.

帮帮我StackOverflow,你是我唯一的希望.

iis asp.net-mvc cors asp.net-web-api

43
推荐指数
5
解决办法
5万
查看次数

CORS在使用OWIN身份验证的web api中无效

在我的应用程序中,我使用带有基于令牌的身份验证的web api和CORS支持,但是当客户端请求令牌时,由于CORS发生错误(跨源请求被阻止:同源策略不允许在(我的站点)读取远程资源这可以通过将资源移动到同一域或启用CORS来解决.)

我已经配置了CORS支持所需的一切(我想是这样).在这里我的配置

Owin开始上课

   public class Startup
    {
        public void Configuration(IAppBuilder app)
        {


            var config = new HttpConfiguration
            {
                DependencyResolver = new StructureMapWebApiDependencyResolver(container)

            };


            WebApiConfig.Register(config);  // registering web api configuration
            app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);  // cors for owin token pipeline
            app.UseWebApi(config);
            ConfigureOAuth(app);


        }

        public void ConfigureOAuth(IAppBuilder app)
        {
            var oAuthAuthorizationServerOptions = new OAuthAuthorizationServerOptions()
            {

                AllowInsecureHttp = true,
                TokenEndpointPath = new PathString("/token"),
                AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
                Provider = new SimpleAuthorizationServerProvider()
            };
            // Token Generation
            app.UseOAuthAuthorizationServer(oAuthAuthorizationServerOptions);
            app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());

        }
    }
Run Code Online (Sandbox Code Playgroud)

和我的webapi配置

public static class WebApiConfig
    { …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc cors asp.net-web-api owin katana

18
推荐指数
2
解决办法
3万
查看次数

标签 统计

cors ×4

asp.net-mvc ×3

asp.net-web-api ×3

angularjs-http ×1

iis ×1

katana ×1

owin ×1