繁体   English   中英

Cors 错误 - MVC 和 Web API

[英]Cors Error - MVC and Web API

我有一个 MVC 应用程序,它也使用 webapi2。 要调用 api 服务,我正在使用 jquery ajax,如下所示。

$.ajax({
url: GetBaseURL() + '/api/MyController/PutMethod',
type: 'put',
data: dataObject,
contentType: 'application/json',
timeout: AJAX_TIMEOUT,
success: function () {
self.CallOtherFunction();
});

并且函数 getbaseURL 返回 content.url("~") 虽然这种方法在某些页面上有效,但它会抛出“跨源请求被阻止:相同的源策略不允许读取http://api/MyController/ 上的远程资源PutMethod ”错误。

我曾尝试在 cors 上搜索,但无法理解为什么我会面临此错误,即使我在一个解决方案下同时拥有 MVC 和 Webapi,并通过 Visual Studio 运行。

帮助表示赞赏。 谢谢。

问题出在您的 WebApi 中。 项目可以在同一个解决方案中,只有端口可以不同,你会得到 CORS 错误。 要解决 WebApi 问题,您可以阅读这篇文章: http : //www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api

如果您在 mvc 中调用 api 时遇到此错误,请按照以下步骤操作

第 1 步:将此标签放在 system.webServer 标签下的 api 中的web.config文件中。

 <system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*"/>
        <add name="Access-Control-Allow-Headers" value="Content-Type, X-Your-Extra-Header-Key"/>
        <add name="Access-Control-Allow-Methods" value="GET,POST,PUT,DELETE,OPTIONS"/>
        <add name="Access-Control-Allow-Credentials" value="true"/>
      </customHeaders>
    </httpProtocol>
   </system.webServer>

第 2 步 - 将其放入 webapi 应用程序中的global.asax.cs文件中

protected void Application_BeginRequest()
        {
            if (Request.Headers.AllKeys.Contains("Origin") && Request.HttpMethod == "OPTIONS")
            {
                Response.End();
                Response.Flush();
            }
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM