2 u014542626 u014542626 于 2016.04.06 18:27 提问

微信公众号开发获取openid时的跨域问题 2C

本来很简单的一件事情,结果遇上了跨域。。
接触过微信开发的应该知道,获取openid的时候,有一步是这样的:
页面请求服务器获取openid,服务器让页面redirect到微信服务器,微信服务器返回一个code给本地服务器。
然后,redirect的时候,因为是本地请求微信的域名,就跨域了。
然而我设置了Access-Control-Allow-Origin到http头,又试过原生的XHR请求,都提示跨域问题。
提示是这样的:

XMLHttpRequest cannot load https://open.weixin.qq.com/connect/oauth2/authorize? No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://XX.eicp.net' is therefore not allowed access.

我的代码是这样的:

    var xmlhttp = new XMLHttpRequest();
    if (!xmlhttp.setRequestHeader) {
                xmlhttp = window.XMLHttpRequest();
            }
            xmlhttp.onreadystatechange = function() {
                if (this.readyState == 1) {
                    this.setRequestHeader("Access-Control-Allow-Origin", "*");
                } else if (this.readyState == 4 && this.status == 200) {
                    mui.toast(this);
                }
            }
            xmlhttp.open("GET", "/mobile/weixin/getOpenid", true);
            xmlhttp.send();

也试过:

 <%
    response.setHeader("Access-Control-Allow-Origin", "*");
    response.setHeader("Content-Type", "text/html; charset=UTF8");
    %>

2个回答

weixin_39889552
weixin_39889552   2017.09.14 11:38

楼主,我也遇到你这样的问题了,一模一样,你怎么解决的

qq_33699018
qq_33699018 你好 请问你的问题解决了吗
大约 2 个月之前 回复
showbo
showbo   Ds   Rxr 2016.04.06 20:49

这种都是服务器端来做,客户端除非open.weixin.qq.com是你的。。

Bessicxie
Bessicxie open.weixin.qq.com是什么
一天之前 回复
qq_38222106
qq_38222106 回复gonFree: 楼主解决了没有
7 个月之前 回复
u014542626
u014542626 页面是请求到服务器的,但是redirect到微信服务器上了,去请求code,根据code获取openid
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!