相关疑难解决方法(0)

启用Windows身份验证的IIS中的CORS请求的401响应

我正在尝试在我的WebAPI项目中启用CORS支持,如果我启用匿名身份验证,那么一切正常,但是使用Windows Auth +禁用匿名身份验证,发送的OPTIONS请求始终返回401未经授权的响应.请求它的站点位于DOMAIN上,因此应该可以进行呼叫,有没有办法解决问题而不禁用Windows身份验证?

ntlm windows-authentication iis-7.5 cors asp.net-web-api

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

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

我被卡住了. 说真的...... - 解决了.请继续阅读:)

场景:我想在这里做正确的事情.我依靠Thinktecture Identitymodel CORS DelegatingHandler将CORS功能添加到我的REST服务(ASP.NET Web-API).到现在为止还挺好.

为了实际测试它是否正常工作,我做了以下事情:

  1. 我设置了一个简单的HTML页面,并将其发布在与其他服务不同的主机上(xttp:// otherhost/simplewebpage).该页面使用JQuery来发出样本请求.代码见下文.
  2. 接下来,我将我的休息服务设置为不使用iis express,而是在我的开发机器上运行它的完整实例(xttp:// developmenthost/restservice).
  3. 最后但并非最不重要的是在我的开发机器上,我打开了xttp:// otherhost/simplewebpage并触发了Ajax请求.执行错误回调告诉我Chrome中存在"传输错误"(IE9)或""(空字符串).我确保没有代理相关的连接问题或类似的东西.

所以我出去看了Fiddler跟踪和IIS日志.Fiddler说没有GET/rest/hello请求,而是一个OPTIONS/rest/hello请求 - 这完全没问题且预期!但是对OPTIONS请求的响应相当有趣!

整个响应头看起来像这样:

HTTP/1.1 200 OK
Allow: OPTIONS, TRACE, GET, HEAD, POST
Server: Microsoft-IIS/7.5
Public: OPTIONS, TRACE, GET, HEAD, POST
Date: Fri, 15 Feb 2013 14:09:27 GMT
Content-Length: 0
Run Code Online (Sandbox Code Playgroud)

这当然远不及预期的反应.有趣的是,请求甚至没有在我的应用程序中命中Application_BeginRequest().所以我的应用程序无法对该结果负责.我可以在我的IIS日志中看到请求,IIS添加了Powered-by-ASP.NET标头..因此它肯定会通过(右侧)IIS站点.

触发ajax请求的JQuery代码:

    function Run()
    {
        $.ajax({
            type: 'GET',
            url: url,
            dataType: "json",
            beforeSend: function(jqXhr) {
                jqXhr.setRequestHeader("Authorization", "Basic " + getBasicHttpEncodedString(userName, password));
                jqXhr.setRequestHeader("Api-Key", "123");
            },
            success: successCallback, …
Run Code Online (Sandbox Code Playgroud)

jquery http cors asp.net-web-api

33
推荐指数
1
解决办法
5632
查看次数

'Access-Control-Allow-Origin'标头包含多个值'*,*',但只允许一个

我正在使用Angular和asp.net API.我面临的问题:当我在API代码中添加CORS时,它可以在Internet Explorer上运行,但在Chrome和Firefox上不起作用.

这是错误:

XMLHttpRequest无法加载http:// localhost:41028/api/values/abc.'Access-Control-Allow-Origin'标头包含多个值'*,*',但只允许一个.因此,不允许来源" http:// localhost:44796 "访问.

这是我在web.config文件中添加的代码:

<system.webServer>
...
<httpProtocol>
  <customHeaders>
      <!-- Adding the following custom HttpHeader will help prevent CORS errors -->
      <add name="Access-Control-Allow-Origin" value="*" />
      <add name="Access-Control-Allow-Headers" value="Content-Type" />
  </customHeaders>
</httpProtocol>
...
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

WebApiConfigFile.cs我添加的文件中:

var CorsAttribute = new EnableCorsAttribute("* ","* ", "* ");
        config.EnableCors(CorsAttribute);
Run Code Online (Sandbox Code Playgroud)

我是第一次使用CORS.任何帮助将不胜感激.

asp.net cors asp.net-web-api angularjs

28
推荐指数
2
解决办法
6万
查看次数

asp.net web api控制器中不允许405个方法选项?

我有这个非常常见的问题,它说方法不允许(OPTIONS)GET请求.每当我进行API调用时,我都会收到以下错误.我有这样的设置web.config:

<system.webServer>
  <modules>
    <remove name="WebDAVModule"/>
  </modules>
  <httpProtocol>
    <customHeaders>
      <add name="Access-Control-Allow-Origin" value="*"/>
      <add name="Access-Control-Allow-Headers" value="Origin, Authorization, X-Requested-With, Content-Type, Accept"/>
      <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS"/>
    </customHeaders>
  </httpProtocol>
  <handlers>
    <remove name="WebDAV"/>
    <remove name="ExtensionlessUrlHandler-Integrated-4.0"/>
    <remove name="OPTIONSVerbHandler"/>
    <remove name="TRACEVerbHandler"/>
    <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0"/>
  </handlers>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

我尝试使用Asp.Net.WebApi.Cors并强制执行CORS全局使用EnableCors()所有原始标头和方法,这也不起作用.

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

7
推荐指数
1
解决办法
7705
查看次数

"使用EnableCors时,请求的资源不支持http方法'OPTIONS'"

我想在Asp.net Web Api中的一个特定操作上启用CORS.这是我试图这样做的方式:

[Route("api/mycontroller/myaction")]
[HttpPost]
[EnableCors("https://example.com", "*", "post")]
public async Task<IHttpActionResult> MyAction()
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

但是当我向路由发送OPTIONS请求时,我收到一个错误:"请求的资源不支持http方法'OPTIONS'." 我也尝试删除[HttpPost]注释无济于事.我错过了什么?

c# cors asp.net-web-api

7
推荐指数
3
解决办法
1万
查看次数

对预检的反应:"尽管启用了CORS,但没有'Access-Control-Allowed-Origin'"

我无法解决角度4预检请求未通过CORS访问控制检查的问题:"No'Access-Control-Allowed-Origin'".我能够从数据库中成功获取数据,但无法发布/保存数据.我正在使用前端的VS代码访问我的Visual Studio 2015后端.我的Web Api控制器具有以下属性:

[EnableCors(origins: "*", headers: "*", methods: "*")]

    [HttpPost]
    public async Task<IHttpActionResult> Post([FromBody]Employee employee)
    {
        _repo.Create(employee);
        return Ok();
    }
Run Code Online (Sandbox Code Playgroud)

...但是在提出请求时,我收到的错误是:

XMLHttpRequest无法加载http:// localhost:54429/api/createEmployee /.对预检请求的响应未通过访问控制检查:请求的资源上不存在"Access-Control-Allow-Origin"标头.因此不允许来源' http:// localhost:4200 '访问

在我的vs代码中,我的服务看起来像这样:

postEmployeeForm(employee: Employee): Observable<any>{

    let body = JSON.stringify(employee); 
    let headers = new Headers();
    headers.append('Content-Type', 'application/json');
    let options       = new RequestOptions({ headers: headers });

    console.log('posting employee ' , employee);

    return this.http.post("http://localhost:54429/api/employees/", body, options)
                    .map(this.extractData)
                    .catch(this.handleError)


}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

405从帖子中删除正文和选项后的响应.

在此输入图像描述

不确定我错过了什么.

网络配置

<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 …
Run Code Online (Sandbox Code Playgroud)

cors asp.net-web-api preflight angular2-forms angular2-observables

7
推荐指数
1
解决办法
6785
查看次数

为 Web API 1、.net 4.0 启用 CORS 的问题

我需要为我的 Web API 启用 CORS,但我无法升级到 Framework 4.5。我尝试将以下内容添加到我的 Web.config 中以查看它是否有效,但没有:

<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Accept,Content-Type,X-Requested-With"/>
Run Code Online (Sandbox Code Playgroud)

我正在从 ajax 调用访问 URL http://localhost:8484/api/values/

并出现以下错误

XMLHttpRequest 无法加载http://localhost:8484/api/values。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问 Origin 'null'。响应具有 HTTP 状态代码 405。

c# asp.net asp.net-mvc asp.net-mvc-4 asp.net-web-api

2
推荐指数
1
解决办法
3569
查看次数