在 WCF 中启用了 Cors,但在实时服务器上不起作用

Posted

技术标签:

【中文标题】在 WCF 中启用了 Cors,但在实时服务器上不起作用【英文标题】:Cors enabled in WCF but not working on live server 【发布时间】:2019-09-25 10:48:49 【问题描述】:

我正在从我的 Angular 7 应用程序向 WCF 服务端点发送发布请求。在本地主机上,命中转到 WCF 服务器,但是当我在服务器上部署 WCF 应用程序时,方法 405 不允许 Cors 预检错误显示在我的控制台中。甚至在 WCF 应用程序中也启用了 cors。

有什么问题?请帮帮我。

提前致谢。

在邮递员中,我们收到以下标题作为响应

收到邮递员响应标头

【问题讨论】:

【参考方案1】:

当我发布 WCF Restful 样式服务时,我使用以下解决方案来启用 CORS。 将以下 global.asax 文件添加到我的 WCF 服务应用程序项目中。

public class Global : System.Web.HttpApplication
    
        protected void Application_BeginRequest(object sender, EventArgs e)
        

            HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
            if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
            
                HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "POST, PUT, DELETE");

                HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept");
                HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000");
                HttpContext.Current.Response.End();
            

        

然后我可以使用 AJAX 发送 http 资源请求,效果很好。 我无法确定您的问题,如果您可以分享与您的解决方案相关的更多信息,我会给您一些建议。 如果有什么我可以帮忙的,请随时告诉我。

【讨论】:

嘿伙计,我使用了与您提到的相同的东西,但它在本地工作......在部署到服务器后它抛出了 CORS 的错误......说它没有 http好的状态。 您是否使用 webhttpbinding 发布了服务并使用 [webget]/[webinvoke] 修饰了方法?您是否使用过其他 javascript 客户端/工具发送 http 请求来验证问题,Jquery/postman? 是的,我在前端使用 Angular 7 来访问 WCF 服务上的 http 请求。 Angular 7 在 localhost:4200 上运行,当我尝试点击时,发生错误。 如果你使用 Postman 发送请求,你能正确得到响应吗?

以上是关于在 WCF 中启用了 Cors,但在实时服务器上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

启用从 jQuery ajax 到不在 IIS 中托管的 WCF 服务的 CORS POST

CORS(跨源资源共享)https 不工作(IIS 托管 WCF 休息启用端点)

c# Web Api 启用了 CORS 并且请求的资源上不存在可怕的 No 'Access-Control-Allow-Origin' 标头

上传文件(图像)在实时服务器上不起作用,但在dev上工作

在 Tomcat 8.0.30 上启用 CORS

在 Visual Studio 开发服务器上为 Soap Web 服务启用 CORS 设置