ajax添加请求头后无法跨域访问,不加beforesend可以,怎么解决?

devildutty0922 2017-02-07 03:15:35
$(function () {
$.ajax({
type: "get",
url: "http://localhost:27221/api/Charging/GetAllChargingData",
data: {},
beforeSend: function (XHR) {
//发送ajax请求之前向http的head里面加入验证信息
XHR.setRequestHeader('Authorization', 'BasicAuth ' + Ticket);
},
success: function (data, status) {
if (status == "success") {
$("#div_test").html(data);
}
},
error: function (e) {
$("#div_test").html("Error");
},
complete: function () {

}

});
});
...全文
2429 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
dzw225 2017-07-11
  • 打赏
  • 举报
回复
我是#9的 dzw159(一个用户只能连续回复3次,只好再次注册个号码) 。。。 解决了,在NuGet搜索 Microsoft.AspNet.WebApi.Cors,然后引用,之后在 WebApiConfig中的Register加上 //跨域配置 config.EnableCors(new EnableCorsAttribute("*", "*", "*")); 就可以了,注:可以修改 * 号为指定网站,参考:http://www.cnblogs.com/landeanfen/p/5177176.html(感谢这位博主)
dzw159 2017-07-09
  • 打赏
  • 举报
回复
也参考过 http://www.jb51.net/article/90039.htm
dzw159 2017-07-09
  • 打赏
  • 举报
回复
web.config 也配置了 允许跨域....就是无法在HTTP的Header加入验证信息....
dzw159 2017-07-09
  • 打赏
  • 举报
回复
请问楼主是否解决该问题,希望能告知
  • 打赏
  • 举报
回复
引用 5 楼 devildutty0922 的回复:
如果不加beforeSend可以实现跨域,没问题,但是加了beforeSend就不行了
你的Ticket变量定义了没有?没有定义就报错了 还有请求的url地址你按照1#说的增加了 Access-Control-Allow-Origin 投了没有?没设置过也会报跨域错误
soonyolsd 2017-02-08
  • 打赏
  • 举报
回复
jsonp可以不
devildutty0922 2017-02-08
  • 打赏
  • 举报
回复
如果不加beforeSend可以实现跨域,没问题,但是加了beforeSend就不行了
devildutty0922 2017-02-08
  • 打赏
  • 举报
回复
这是我服务端增加的属性类
devildutty0922 2017-02-08
  • 打赏
  • 举报
回复
public class CrossSiteAttribute : ActionFilterAttribute { private const string Origin = "Origin"; private const string AccessControlAllowOrigin = "Access-Control-Allow-Origin"; private const string originHeaderdefault = "*"; /// <summary> /// 请求操作执行完成后动作 /// </summary> /// <param name="actionExecutedContext">Http执行上下文</param> public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext) { actionExecutedContext.Response.Headers.Add(AccessControlAllowOrigin, originHeaderdefault); //actionExecutedContext.Response.Headers.Add("Access-Control-Allow-Methods", "POST, GET, OPTIONS,DELETE,PUT"); // actionExecutedContext.Response.Headers.Add("Access-Control-Allow-Headers", "Test"); } }
孟子E章 2017-02-07
  • 打赏
  • 举报
回复
服务器端要设置 Access-Control-Allow-Origin Access-Control-Allow-Methods Access-Control-Allow-Headers 你可以搜索下这方面的资料

52,792

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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