当前位置:首页 > 开发 > 编程语言 > Json > 正文

遭遇jsonp同域下变作post请求的坑

发表于: 2015-01-28   作者:vb2005xu   来源:转载   浏览:
摘要: 今天迁移一个站点时遇到一个坑爹问题,同一个jsonp接口在跨域时都能调用成功,但是在同域下调用虽然成功,但是数据却有问题. 此处贴出我的后端代码片段 $mi_id = htmlspecialchars(trim($_GET['mi_id '])); $mi_cv = htmlspecialchars(trim($_GET['mi_cv ']));  贴出我前端代码片段: $.aj

今天迁移一个站点时遇到一个坑爹问题,同一个jsonp接口在跨域时都能调用成功,但是在同域下调用虽然成功,但是数据却有问题. 此处贴出我的后端代码片段

$mi_id = htmlspecialchars(trim($_GET['mi_id ']));
$mi_cv = htmlspecialchars(trim($_GET['mi_cv ']));

 贴出我前端代码片段:

$.ajax({
                    url: jsonp_login_url,
                    data: data,
                    type: 'POST',// 此处修改成 GET 就没有问题
                    dataType: 'jsonp'
                }).success(function(res)

 

注意看 我标识出的代码,

 

当使用 post 类型时,虽然提交的 dataType 设置成 jsonp 但是在后端 $_GET 是取不到参数的,

 

按我的理解, jsonp 应该就是 动态创建了一个 script 标签而已啊,为什么会有这个问题呢?

 

我搜了下一些资料,没有找到原因在哪? 不过找到了一种新的跨域解决方案: CORS

http://www.360doc.com/content/14/0106/11/15643_343005039.shtml

 

倒是蛮有意思的一个跨域方案...

 

有人知道的给我个回复

 

 我好奇的是 发出 jsonp 请求时正常来说 应该是创建 script标签 然后get 一个url 地址才对啊


但是 同域下 jquery 创建script 标签时却可以发出 post 请求
 
----------------------------------------------------------------------------------------------------------------
答案已经找到:
写道
同域下 jquery jsonp post的问题我找到答案了 jsonp支持post,那么内部机制便不是使用inject script标签的机制。而是隐藏的iframe+form表单提交。此时server端就要去读取form数据,而非get
 

遭遇jsonp同域下变作post请求的坑

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
前言   ajax,用苍白的话赞扬:很好。   我们可以使用ajax实现异步获取数据,减少服务器运算时
0 什么是跨域请求 在一个域名下请求另外一个域名下的资源,就是跨域请求。 example 1: 比如:我当前
近期在项目中遇到这样一问题,关于jsonp跨域问题,get传值是可以的,但post传值死活不行啊,于是网
JSONP解释 在解释JSONP之前,我们需要了解下”同源策略“这个概念,这对理解跨域有帮助。基于安全的原
前言 ajax,用苍白的话赞扬:很好。 我们可以使用ajax实现异步获取数据,减少服务器运算时间,大大
一直对jQuery 的jsonp 调用比较疑惑,今天研究了一下jsonp 做了一个简单的调用例子,我用asp做服务端
一直对jQuery 的jsonp 调用比较疑惑,今天研究了一下jsonp 做了一个简单的调用例子,我用asp做服务端
javascript 代码: $.ajax({ url: "http://10.255.32.250/recent_done_seven_days", data: '', data
需求 遇到的问题 解决办法 需求 今天项目需要访问一个外部链接获取数据,是跨域的。使用ajax 请求一
本地虚拟两个域名,分别为:www.test.com、www.abc.com http://www.test.com/index.html页面点击按
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号