zoukankan      html  css  js  c++  java
  • script 解决 跨域访问

    跨域访问,简单来讲,就是A服务器的javascript代码访问B服务器,包括提交内容、获取内容。由于安全原因,跨域访问是被各大浏览器所默认禁止的。写过跨域访问 ajax 的朋友相信都遇到过被告知“没有权限”的情况。通过 XMLHttp 来发送数据给 Bookmark 服务器的尝试失败了。最终,在一篇文章中看到,与 iframe 不同,如果 A 网站从 B 网站加载 javascript , A 网站可以自由的访问该 javascript 的内容,并不会被浏览器认为是跨域访问。当用户点击提交时,可以动态创建一个 javascript 对象,该对象的 src 指向 Bookmark 服务器的一个 servlet ,注意: URL 、 Tag 、 Notes 、 User 、Password 等信息被作为 src URL 参数传给服务器。请看下面的代码

      var url = "https://api.weixin.qq.com/cgi-bin/token?";
                var grantType = "client_credential";
                var appid = "wx275399bf9d89c99d";
                var secret = "eae776d074c9f8e08d2f6209d0469456";
                url = url + "&grant_type=" + grantType + "&appid=" + appid + "&secret=" + secret;
                url = encodeURI(url);
                var script = document.createElement("script");
                script.setAttribute("src", url);
                script.type = "text/javascript";
                document.body.appendChild(script);
            
            }
            //客户端接收到服务器的信息,操作此信息
            function onServerResponse(INADEQUATE_INFORMATION) {
                alert(INADEQUATE_INFORMATION);
            }

    上面例子中,script. js_obj.setArrribute() 将信息作为 src 的 URL 参数提交给了 weixin servlet 。那么用户又如何取得服务器的响应信息呢?答案就是最末一行代码, servlet 的输出必须是 javascript 代码,它可以调用用户网页上的其他 javascript 函数,以及操作 dom 对象。下面的 servlet 代码生成了一个 javascript 函数调用:

      out.write("onServerResponse(INADEQUATE_INFORMATION);");服务器返回的script代码,包括一个函数,参数就是要返回的值
    document.body.appendChild(js_obj) 执行后 onServerResponse( INADEQUATE_INFORMATION) 就会得到执行,使客户网页响应服务器结果。这样一个完整的通信过程就完成了。
  • 相关阅读:
    最近花了几个夜晚帮师妹整了一个企业网站
    英文学习网站
    Visual Studio 常用快捷键 (二)
    Visual Studio 常用快捷键
    学习英文之社区,博客及源码
    CodeForces 676D代码 哪里有问题呢?
    线程中调用python win32com
    Python 打包工具cx_freeze 问题记录及解决办法
    HDU1301 Jungle Roads
    HDU 1875 畅通工程再续
  • 原文地址:https://www.cnblogs.com/nianlee/p/3094720.html
Copyright © 2011-2022 走看看