javascript - jquery用post方法请求数据,怎么在header里传参?

WBOY
发布: 2016-08-04 09:20:58
原创
1218 人浏览过

在网上找到了这种方法:
$.ajax({

<code> //请求类型,这里为POST
 type: 'POST',
 //你要请求的api的URL
 url: url ,
 //是否使用缓存
 cache:false,
 //数据类型,这里我用的是json
 dataType: "json", 
 //必要的时候需要用JSON.stringify() 将JSON对象转换成字符串
 data: JSON.strigify({key:value}), //data: {key:value}, 
 //添加额外的请求头
 headers : {'Access-Control-Allow-Origin':'*'},
 //请求成功的回调函数
 success: function(data){
    //函数参数 "data" 为请求成功服务端返回的数据</code>
登录后复制
登录后复制

},
});
但是提示:
Request header field Access-Control-Allow-Origin is not allowed by Access-Control-Allow-Headers in preflight response.
已经在php代码里吧 Access-Control-Allow-Headers的值设置为*了,还是报错,有没有解决办法?

回复内容:

在网上找到了这种方法:
$.ajax({

<code> //请求类型,这里为POST
 type: 'POST',
 //你要请求的api的URL
 url: url ,
 //是否使用缓存
 cache:false,
 //数据类型,这里我用的是json
 dataType: "json", 
 //必要的时候需要用JSON.stringify() 将JSON对象转换成字符串
 data: JSON.strigify({key:value}), //data: {key:value}, 
 //添加额外的请求头
 headers : {'Access-Control-Allow-Origin':'*'},
 //请求成功的回调函数
 success: function(data){
    //函数参数 "data" 为请求成功服务端返回的数据</code>
登录后复制
登录后复制

},
});
但是提示:
Request header field Access-Control-Allow-Origin is not allowed by Access-Control-Allow-Headers in preflight response.
已经在php代码里吧 Access-Control-Allow-Headers的值设置为*了,还是报错,有没有解决办法?

首先我们谈谈为什么会出现preflight问题,那是因为你的请求已经不是一个“简单请求”了,跨域问题中,常把复合特定条件的一些请求称为简单请求,而满足“简单请求”的条件是这样的:

请求类型必须是GETPOSTHEAD三者中的一种
请求头(Header)中仅可以包含:

  • Accept

  • Accept Language

  • Content Language

  • Last Event ID

  • Content Type:仅接受application/x-www-form-urlencoded,multipart/form-data,text/plain

你的问题是,显然,你增加了一个header Access-Control-Allow-Origin,导致请求变得“不简单”了。当请求不简单时,浏览器处于安全原因,会先发送一个所谓的preflight请求,方法为OPTIONS

关于跨域的更多内容,推荐看构建public APIs与CORS

你的问题,我理解,去掉那个多余的header应该就好了

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!