Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 跨域localhost:端口请求被拒绝,对web api的$http angularjs请求被拒绝_Javascript_Angularjs_Ajax_Asp.net Web Api_Asp.net Web Api2 - Fatal编程技术网

Javascript 跨域localhost:端口请求被拒绝,对web api的$http angularjs请求被拒绝

Javascript 跨域localhost:端口请求被拒绝,对web api的$http angularjs请求被拒绝,javascript,angularjs,ajax,asp.net-web-api,asp.net-web-api2,Javascript,Angularjs,Ajax,Asp.net Web Api,Asp.net Web Api2,由ASP.NET服务器托管的angular js。 调用web api。 不带参数的POST web api何时工作。但当将参数传递给POST web api时,它会给出以下错误。 错误: 无法加载XMLHttpRequesthttp://localhost:60117/api/Parts. 对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许来源”标头。起源http://localhost:64658 因此不允许访问 注意:已启用cors nuget。[EnableCors*

由ASP.NET服务器托管的angular js。 调用web api。 不带参数的POST web api何时工作。但当将参数传递给POST web api时,它会给出以下错误。 错误: 无法加载XMLHttpRequesthttp://localhost:60117/api/Parts. 对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许来源”标头。起源http://localhost:64658 因此不允许访问

注意:已启用cors nuget。[EnableCors*,*,*] 下面是webapiconfig.cs中的代码

以下是我的请求标题:

OPTIONS /api/Parts HTTP/1.1
Host: localhost:60117
Connection: keep-alive
Access-Control-Request-Method: POST
Origin: http://localhost:64658
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36    (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36
Access-Control-Request-Headers: content-type
Accept: */*
Referer: http://localhost:64658/app/views/Index.html
Accept-Encoding: gzip, deflate, sdch, br
Accept-Language: en-US,en;q=0.8
当在web.config中执行下面的代码时,会出现多个accept谓词错误

<httpProtocol>
    <customHeaders>
        <clear/>
        <add name="Access-Control-Expose-Headers " value="WWW-Authenticate"/>
        <add name="Access-Control-Allow-Origin" value="*"/>
        <add name="Access-Control-Allow-Methods" value="GET, POST, OPTIONS, PUT, PATCH, DELETE"/>
        <add name="Access-Control-Allow-Headers" value="accept, authorization, Content-Type"/>
        <remove name="X-Powered-By"/>
    </customHeaders>
</httpProtocol>
请求的资源不支持http方法“POST”

AJAX调用:

$http({
        method: "POST",                       
        url: config.APIURL + 'Parts',
        data: {'final':'final'}                       
});

请帮帮我。无法解决此问题。

端口差异被视为跨域xdomain请求,因此某些浏览器发送飞行前选项请求

您需要设置服务器以接受这些请求并返回200 OK 根据以下网址


您需要在服务器端添加CorsMessageHandler类以允许HTTP请求。

如果您的尝试没有成功,您可以尝试此操作。 在WebApi的Globax.asax中,使用以下方法

protected void Application_BeginRequest()
        {
            if (Context.Request.HttpMethod == "OPTIONS")
            {
                Context.Response.AddHeader("Access-Control-Allow-Origin", Context.Request.Headers["Origin"]);
                Context.Response.AddHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
                Context.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");                    
                Context.Response.End();
            }
    }
在WebApi配置中,使用以下方法调用来启用cors

  config.EnableCors();
在您的控制器中,属性类似于

[EnableCors(origins: "*", headers: "*", methods: "*")]
希望这有帮助。 您还可以参考此网站了解更多详细信息。
感谢您已经在webapiconfig中启用了core,并且在控制器级别启用了core。虽然运气不好,但您缺少标头访问控制允许来源,可能需要添加请求响应,以便我们可以给您提供更好的答案,我看到配置代码被注释掉了-我希望实际上您已将commentshave set web.config与system.webserver一起删除-现在出现错误:飞行前响应中的Access Control Allow header不允许请求标头字段内容类型。该错误准确地告诉您要做什么,您需要删除callI已删除内容类型选项的内容类型标题。使用ajax调用请求编辑问题。但相同。飞行前响应中的访问控制允许标头不允许请求标头字段内容类型
  config.EnableCors();
[EnableCors(origins: "*", headers: "*", methods: "*")]