MVC一个简单的跨域POST问题

KIIYURIKII 2015-08-12 03:11:45
先贴代码:

前端使用一个站点。

$(function () {
var model = {};
model.refUrl = "ssssssssss";
$.ajax({
async: false,
url: "http://localhost:5566/AccessRecord/StartPost",
type: "post",
data: model,
dataType: "json",
timeout: 10000,
success: function (json) {
alert(1);
//alert(JSON.stringify(json));
//debugger;
},
error: function (msg) {
//alert("error");
//alert(JSON.stringify(msg));
debugger;
}
});
})


服务器端使用一个站点

public ActionResult StartPost(FloorDTO dto)
{
return Json(new RtnDTO() { result = "OK", msg = dto.refUrl }, JsonRequestBehavior.DenyGet);
}


服务器端的Config配置如下:

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



可以访问到服务器的代码。但前端接收时,JS报的错误如下。

XMLHttpRequest cannot load http://localhost:5566/AccessRecord/StartPost. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:6602' is therefore not allowed access.
...全文
776 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
newtee 2015-08-13
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace System.Web.Mvc
{
    public class AllowCrossSiteJsonAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "*");
            base.OnActionExecuting(filterContext);
        }
    }
}
这样比较好 [ AllowCrossSiteJson] public ActionResult StartPost(FloorDTO dto)
newtee 2015-08-13
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace System.Web.Mvc
{
    public class AllowCrossSiteJsonAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "*");
            base.OnActionExecuting(filterContext);
        }
    }
}
这样比较好 [ AllowCrossSiteJson] public ActionResult StartPost(FloorDTO dto)
  • 打赏
  • 举报
回复
<add name="Access-Control-Allow-Headers" value="Content-Type"/> 这个value也改成*试试看呢
lc_ant 2015-08-13
  • 打赏
  • 举报
回复
帮顶。。。。
果冻真甜 2015-08-13
  • 打赏
  • 举报
回复
应该是jsonp
KIIYURIKII 2015-08-12
  • 打赏
  • 举报
回复
引用 3 楼 wangjun8868 的回复:
请求这个地址的的时候 头部加: Access-Control-Allow-Origin: * 不过有的浏览器不支持
所有浏览器都试过了。没成功过。不知道什么原因。
编程有钱人了 2015-08-12
  • 打赏
  • 举报
回复
请求这个地址的的时候 头部加: Access-Control-Allow-Origin: * 不过有的浏览器不支持
KIIYURIKII 2015-08-12
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
你这个配置是在5566那个提供服务的服务上吗?
是的。
  • 打赏
  • 举报
回复
你这个配置是在5566那个提供服务的服务上吗?

62,046

社区成员

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

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

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

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