今天写博客碎碎念功能的时候,需要异步从 接口获取一些数据, 如果使用jsonp的话,内容长度有限制,所以打算用post 提交,但是浏览器提示:
已阻止跨源请求:同源策略禁止读取位于 http://api.he29.com/api/twitter/add 的远程资源。(原因:CORS 头缺少 ‘Access-Control-Allow-Origin’)。
百度看了看,原来是被服务器给阻止了,找到解决办法
1 2 3 4 5 6 |
Header("Access-Control-Allow-Origin:*"); Header("Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE"); 在服务器接口的入口出设置header头如上, 然后我们直接使用post提交数据,就可以提交上去啦~~ 不过这样比较危险,因为任何来源都可以访问, 我们可以这样: |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
Header("Access-Control-Allow-Origin:he29.com"); 这样的话,只有he29.com的请求才可以提交数据~ <script type="text/javascript"> $.ajax({ url: 'http://api.he29.com/api/twitter/add', type: 'post', dataType: 'json', data: {userid: '1',content:'你试能是电脑',come:'pc'}, success:function(data){ console.log(data); } }) .done(function() { console.log("success"); }) .fail(function() { console.log("error"); }) .always(function() { console.log("complete"); }); </script> </code> <strong>服务器收到的数据:</strong> ( [userid] => 1 [content] => 你试试看叫你啥空间那可能..... [addtime] => 1448717821 ) |