javascript - 不改动后台如何实现ajax的跨域post?
天蓬老师
天蓬老师 2017-04-11 13:27:07
[JavaScript讨论组]

1.背景:需要实现微信H5支付无点击自动跳转,所以不能表单提交只能ajax自动提交。
服务器在别人那,因此对于跨域最常用的在服务端设置Access-Control-Allow-Origin的方案不可行
JSONP的get方法不安全,而且别人提供的post接口不一定能get请求过去。
2.单纯在前端做相关设置能否实现ajax跨域post?如何实现?
3.ajax似乎不允许重定向,如果post成功后会重定向,如何实现ajaxpost后重定向?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(6)
大家讲道理

纯前端不行的,可以自己写个转发服务器,用express+superagent

大家讲道理

用nginx反向代理

比如: 把 http://ajax.googleapis.com/ajax/libs/* 转发到 http://cdn.bootcss.com/

server
{
    listen 80;
    server_name ajax.googleapis.com;
    location ~ ^/ajax/libs/(.+)$ {
        return 301 http://cdn.bootcss.com/$1;
    }
    
}
伊谢尔伦

正规做法是CORS,确实需要改后端,JSONP只能get

巴扎黑

自己也查阅了比较多的资料,看了纯前端ajax跨域post并没有很好的解决方案。目前自己的做法是写一个隐藏表单,调用这个表单的submit函数,这样可以解决跨域post的问题而不需要用到服务端

PHPz

1.微信充值部分的调用页需要在公众号绑定安全域名地址的,所以这个肯定得在公众号平台那方。
2.充值是需要拉起WX的WeixinJSBridge.invoke,但需要绑定WX事件WeixinJSBridgeReady,则这部分也必须在1.里的范围内。
3.拉起WX授权充值是绝对不可能在非1.的范围内执行的,即使是iframe也不可能。

因此推荐和对方协商,让对方提供回调接口,如当充值成功,执行你这边的onPayOk()、onPayCancel()这类自定义的方法。
推荐用postMessage来传递数据。

补充:
你要触发充值,你的代码文件必须在1.的地址内,不然让对方提供
pay({

    itemId: '',        // 必填, 值为物品ID
    cpParam: '',    // 选填, 其为cp自定义参数, 会在结果通知接口中传回CP服务器
    auto: true        // 选填, 默认true. true为直接弹出WX授权支付; false为进入一个支付详情页, 再付款
});

这种接口和调用js,只做提交的动作。

伊谢尔伦

来来来,你需要这个代理

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号