jQuery.ajax 跨域请求webapi设置headers的解决方案


Posted in Javascript onAugust 08, 2016

解决跨域调用服务并设置headers 主要的解决方法需要通过服务器端设置响应头、正确响应options请求,正确设置 JavaScript端需要设置的headers信息 方能实现。

1.第一步 服务端设置响应头,在webapi的web.config做如下设置

<system.webServer>
<httpProtocol>
<!--跨域配置开始-->
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" /><!--支持全域名访问,不安全,部署后需要固定限制为客户端网址-->
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" /><!--支持的http 动作-->
<add name="Access-Control-Allow-Headers" value="Content-Type,X-Requested-With,token" /><!--响应头 请按照自己需求添加 这里新加了token这个headers-->
<add name="Access-Control-Request-Methods" value="GET, POST, PUT, DELETE, OPTIONS" /><!--允许请求的http 动作-->
</customHeaders>
<!--跨域配置结束-->
</httpProtocol>

2.第二部 了解IE chrome 等浏览器 对于 跨域请求并要求设置Headers自定义参数的时候的 "预请求" 就是如果遇到 跨域并设置headers的请求,所有请求需要两步完成!

A 第一步:发送预请求 OPTIONS 请求。此时 服务器端需要对于OPTIONS请求作出响应 一般使用202响应即可 不用返回任何内容信息。(能看到这份手稿的人,本人不相信你后台处理不了一个options请求)options请求可在权限拦截器中处理

/// <summary>
/// 权限拦截器
/// </summary>
public class ApiAuthorizeAttribute : AuthorizeAttribute
{
public override void OnAuthorization(HttpActionContext actionContext)
{
if (actionContext.Request.Method == HttpMethod.Options)
{
actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.Accepted);
return;
}
}
}

B 第二步:服务器accepted 第一步请求后 浏览器自动执行第二步 发送真正的请求。

客户端代码:

$("#btnSumit").click(function () {
var Ticket = $.cookie("token");
var model = {
id: 1
};
$.ajax({
type: "POST",
url: "http://localhost:65312/api/products/FindProductById",
data: JSON.stringify(model),
contentType: "application/json; charset=utf-8",
dataType: "json",
beforeSend: function (xhr) {
// //发送ajax请求之前向http的head里面加入验证信息
xhr.setRequestHeader("token", Ticket); // 请求发起前在头部附加token
},
success: function (data, status) {
if (data.statuscode == "401") {
alert(data.msg);
}
else
{
alert(JSON.stringify(data))
}
},
//error: function (XMLHttpRequest, textStatus, errorThrown) {
// alert(XMLHttpRequest.status);
// alert(XMLHttpRequest.readyState);
// alert(textStatus);
//},
complete: function () {
}
});
});

以上所述是小编给大家介绍的jQuery.ajax 跨域请求webapi设置headers解决方案,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
9个javascript语法高亮插件 推荐
Jul 18 Javascript
html的DOM中document对象forms集合用法实例
Jan 21 Javascript
JavaScript实现随机替换图片的方法
Apr 16 Javascript
jQuery Ajax页面局部加载方法汇总
Jun 02 Javascript
又一枚精彩的弹幕效果jQuery实现
Jul 25 Javascript
Angular2中Bootstrap界面库ng-bootstrap详解
Oct 18 Javascript
JS实现简单抖动效果
Jun 01 Javascript
vue.js中过滤器的使用教程
Jun 08 Javascript
解决JavaScript layui 下拉框不显示的问题
Aug 14 Javascript
小程序实现层叠卡片滑动效果
Aug 26 Javascript
vue使用微信扫一扫功能的实现代码
Apr 11 Javascript
vue-cli3访问public文件夹静态资源报错的解决方式
Sep 02 Javascript
一个超简单的jQuery回调函数例子(分享)
Aug 08 #Javascript
Bootstrap Table服务器分页与在线编辑应用总结
Aug 08 #Javascript
使用jQuery5分钟快速搞定双色表格的简单实例
Aug 08 #Javascript
BootStrap Table 分页后重新搜索问题的解决办法
Aug 08 #Javascript
用js读写cookie的简单方法(推荐)
Aug 08 #Javascript
Js遍历键值对形式对象或Map形式的方法
Aug 08 #Javascript
js中遍历Map对象的简单实例
Aug 08 #Javascript
You might like
星际争霸中的热键
2020/03/04 星际争霸
德生PL450的电路分析和低放电路的改进办法
2021/03/02 无线电
Laravel5.* 打印出执行的sql语句的方法
2017/07/24 PHP
PHP学习笔记之session
2018/05/06 PHP
比较搞笑的js陷阱题
2010/02/07 Javascript
详解AngularJS中的作用域
2015/06/17 Javascript
Bootstrap CSS布局之表单
2016/12/17 Javascript
超全面的JavaScript开发规范(推荐)
2017/01/21 Javascript
Vue自定义指令拖拽功能示例
2017/02/17 Javascript
详谈js模块化规范
2017/07/07 Javascript
基于LayUI实现前端分页功能的方法
2017/07/22 Javascript
JS监控关闭浏览器操作的实例详解
2017/09/12 Javascript
JS构造一个html文本内容成文件流形式发送到后台
2018/07/31 Javascript
详解如何创建并发布一个 vue 组件
2018/11/08 Javascript
Angular2实现的秒表及改良版示例
2019/05/10 Javascript
ios中视频的最后一桢问题解决
2019/05/14 Javascript
前后端常见的几种鉴权方式(小结)
2019/08/04 Javascript
VUE项目中加载已保存的笔记实例方法
2019/09/14 Javascript
vue实现移动端返回顶部
2020/10/12 Javascript
跟老齐学Python之通过Python连接数据库
2014/10/28 Python
Python简单实现阿拉伯数字和罗马数字的互相转换功能示例
2018/04/17 Python
python opencv实现图像边缘检测
2019/04/29 Python
从pandas一个单元格的字符串中提取字符串方式
2019/12/17 Python
Python爬虫谷歌Chrome F12抓包过程原理解析
2020/06/04 Python
tensorflow与numpy的版本兼容性问题的解决
2021/01/08 Python
css3.0 图形构成实例练习一
2013/03/19 HTML / CSS
澳大利亚礼品卡商店:Gift Card Store
2019/06/24 全球购物
商务英语求职自荐信范文
2013/12/24 职场文书
中层竞聘演讲稿
2014/01/09 职场文书
高二历史教学反思
2014/01/25 职场文书
信用社竞聘演讲稿
2014/05/16 职场文书
优秀少先队员事迹材料
2014/12/24 职场文书
考研导师推荐信范文
2015/03/27 职场文书
电影开国大典观后感
2015/06/04 职场文书
CSS三大特性继承性、层叠性和优先级详解
2022/01/18 HTML / CSS
mysqldump进行数据备份详解
2022/07/15 MySQL