加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 18:55:09 所属栏目:百科 来源:网络整理
导读:今天迁移一个站点时遇到一个坑爹问题,同一个jsonp接口在跨域时都能调用成功,但是在同域下调用虽然成功,但是数据却有问题. 此处贴出我的后端代码片段 $mi_id = htmlspecialchars(trim($_GET['mi_id ']));$mi_cv = htmlspecialchars(trim($_GET['mi_cv ']));

今天迁移一个站点时遇到一个坑爹问题,同一个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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读