【100分】WebApi内置跨域功能,为什么我就实现不了??????速度来高手帮帮我!!!!!

丰云 2015-04-20 11:31:20
如题,我按网上给的方法,用System.Web.Http.Cors做webapi跨域的设置,但还是无法跨域访问,
代码如下
启动跨域:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http.Formatting;
using System.Web.Http;

namespace WebApi
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services

// Web API routes
config.MapHttpAttributeRoutes();

config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);

//开启跨域设置
config.EnableCors();
//GlobalConfiguration.Configuration.EnableCors();
//返回json格式的控制
GlobalConfiguration.Configuration.Formatters.JsonFormatter.MediaTypeMappings.Add(new QueryStringMapping("json", "true", "application/json"));

}
}
}

控制器配置

using System.Web.Http;
using System.Web.Http.Cors;

namespace WebApi.Controllers
{
[EnableCors(origins: "http://localhost:40226", headers: "*", methods: "*")]
public class MouldController : ApiController
{
[ApiVisitFilter]
public MouldModel Get([FromUri]ParaModel model)
{
var mould = new MouldModel();
// 。。。。。。
return mould;
}
}
}

我的开发平台是vs2013,请问有没有谁有这方面的经验,请赐教一二,万分没有,只好百分感谢!!谢谢!!
...全文
2474 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
lanwan1013 2016-08-29
  • 打赏
  • 举报
回复
别的数据跨域都可以了,唯独图片文件post提交都会报这个错 此资源不支持请求实体的媒体类型“multipart/form-data”。 有没有大神解决了的呀
巫师杰洛特 2016-03-25
  • 打赏
  • 举报
回复
[EnableCors(origins: "*", headers: "*", methods: "*")] 改成这样试下。
Hi幸福来敲门 2015-12-24
  • 打赏
  • 举报
回复
//显示开启对CORS的支持 GlobalConfiguration.Configuration.EnableCors(); 放在Application_Start()方法下第一行
LcGyAn 2015-04-22
  • 打赏
  • 举报
回复
补充一下 WCF REST

<httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="*" />
        <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE" />
      </customHeaders>
    </httpProtocol>
      [WebInvoke(Method = "OPTIONS", UriTemplate = "*")]
        public void GetOptions()
        {


        }
LcGyAn 2015-04-22
  • 打赏
  • 举报
回复
昨天刚解决跨域问题,今天就看到了
  • 打赏
  • 举报
回复
类库应该是能够控制哪些域名可以访问,规则可以多样化,这个是取巧的做法,规则判断能力没dll那么强,有时间我会去研究下通过dll的方式怎么实现
丰云 2015-04-21
  • 打赏
  • 举报
回复
引用 19 楼 starfd 的回复:
<httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="*" />
        <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE" />
      </customHeaders>
    </httpProtocol>
少了一句,<add name="Access-Control-Allow-Origin" value="*" />这句加上就ok了,我本地测试过了
非常感谢!!! 还是你这个简单直接明了,痛快的解决了问题!! 看来微软也不靠谱啊,搞个类库,害我更新一堆引用来配合它,结果还实现不了,浪费我两天时间!!!!!
  • 打赏
  • 举报
回复
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="*" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE" />
</customHeaders>
</httpProtocol>

少了一句,<add name="Access-Control-Allow-Origin" value="*" />这句加上就ok了,我本地测试过了

丰云 2015-04-21
  • 打赏
  • 举报
回复
http://www.cnblogs.com/artech/p/cors-4-asp-net-web-api-05.html http://diaosbook.com/Post/2013/12/27/tips-for-aspnet-webapi-cors 上面两篇文章都描述了实现ajax跨域访问的服务端EnableCors设置, 为什么我就实现不了??? 有没有做过的高手,指导一二
丰云 2015-04-20
  • 打赏
  • 举报
回复
在别的网站,用ajax访问试过了吗?
丰云 2015-04-20
  • 打赏
  • 举报
回复
引用 13 楼 starfd 的回复:
我真的就这么加上了,然后就可以跨域访问了啊……然后我也不懂你为啥不行……
你是怎么访问的?
  • 打赏
  • 举报
回复
我真的就这么加上了,然后就可以跨域访问了啊……然后我也不懂你为啥不行……
丰云 2015-04-20
  • 打赏
  • 举报
回复
话说,webapi一个主要应用特点,不就是为了跨域吗? 要是跨域这么困难,那它的意义何在?
丰云 2015-04-20
  • 打赏
  • 举报
回复
话说,如果真的不行,微软干嘛开发System.Web.Http.Cors给我们用?
引用 9 楼 sp1234 的回复:
只有兼容 html 的浏览器才支持跨域 --> 只有兼容 html5 的规范的浏览器才支持跨域
话说,如果真的不行,微软干嘛开发System.Web.Http.Cors给我们用? 他们并没有说有浏览器限制啊??
丰云 2015-04-20
  • 打赏
  • 举报
回复
怎么做都不行。。。。。为什么网上这方法那方法,都说得跟真的一样,我一试,就都不行呢。。。。
  • 打赏
  • 举报
回复
只有兼容 html 的浏览器才支持跨域 --> 只有兼容 html5 的规范的浏览器才支持跨域
  • 打赏
  • 举报
回复
基本上这个跨域机制跟 asp.net 没有什么关系,它只是服务在消息头中添加一个字段而已。 这主要靠浏览器端来控制。只有兼容 html 的浏览器才支持跨域,而且你的 javascript 程序必须告诉浏览器你需要跨域访问,否则默认地,还是不允许跨域的。
  • 打赏
  • 举报
回复
如果通过jquery 跨域访问,在服务器端和客户端需要分别配合: 1. 在服务器端,需要为每一个请求进行授权。例如在消息头中要有 Access-Control-Allow-Origin:* 2. 在客户端要写 jQuery.support.cors = true;
  • 打赏
  • 举报
回复
你是加在system.webServer下面的吗?还是说你直接加到了configuration下面?
  • 打赏
  • 举报
回复
我就是将配置加到web.config里面就可以了啊
加载更多回复(6)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧