如何使用javascript发出跨域http get请求?

如何使用javascript发出跨域http get请求?,javascript,cross-domain,dynamics-crm,crm,dynamics-crm-2011,Javascript,Cross Domain,Dynamics Crm,Crm,Dynamics Crm 2011,我正在尝试在Dynamics CRM 2011中实现sms功能。我已经为此创建了一个自定义活动,并在SMS的形式中添加了一个按钮。按下按钮时,应发送短信 我需要为此发出http请求并传递一些参数。以下是触发的代码: function send() { var mygetrequest = new ajaxRequest() mygetrequest.onreadystatechange = function () { if (mygetrequest.readyState == 4) {

我正在尝试在Dynamics CRM 2011中实现sms功能。我已经为此创建了一个自定义活动,并在SMS的形式中添加了一个按钮。按下按钮时,应发送短信

我需要为此发出http请求并传递一些参数。以下是触发的代码:

function send() {
var mygetrequest = new ajaxRequest()
mygetrequest.onreadystatechange = function () {
    if (mygetrequest.readyState == 4) {
        if (mygetrequest.status == 200 || window.location.href.indexOf("http") == -1) {
            //document.getElementById("result").innerHTML = mygetrequest.responseText
            alert(mygetrequest.responseText);
        }
        else {
            alert("An error has occured making the request")
        }
    }
}
var nichandle = "MT-1234";
var hash = "md5";
var passphrase = "[encryptedpassphrase]";
var number = "32497123456";
var content = "testing sms service";

mygetrequest.open("GET", "http://api.smsaction.be/push/?nichandle=" + nichandle + "&hash=" + hash + "&passphrase=" + passphrase + "&number=" + number + "&content=" + content, true)
mygetrequest.send(null)
}

function ajaxRequest() {
    var activexmodes = ["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"] //activeX versions to check for in IE
    if (window.ActiveXObject) { //Test for support for ActiveXObject in IE first (as XMLHttpRequest in IE7 is broken)
        for (var i = 0; i < activexmodes.length; i++) {
            try {
                return new ActiveXObject(activexmodes[i])
            }
            catch (e) {
                //suppress error
            }
        }
    }
    else if (window.XMLHttpRequest) // if Mozilla, Safari etc
        return new XMLHttpRequest()
    else
        return false
}

非常感谢您的帮助。

我想短信服务在不同的领域。如果是这样,您就不能对它进行AJAX调用,因为它违反了同源策略。基本上你有两个选择:

  • 在服务器端发送短信吗
  • 使用

  • 另外,密码短语和其他秘密是否真的可以在HTML中看到?是什么阻止人们窃取它并将其用于自己的目的?

    例如,当从不同的域请求时,错误是:

    无法加载XMLHttpRequesthttp://api.smsaction.be/push/?nichandle=??????&hash=?????&passphrase=[????????]和编号=???和内容=???????????????。访问控制不允许原点允许原点

    对于跨域XMLHttp请求,目标服务器必须发送
    Access Control Allow Origin
    响应头


    MDN:

    检索站点必须批准跨域AJAX请求。通常情况并非如此

    您应该联系smsaction.be或查看他们的常见问题,看看他们是否有任何实施

    通常JSONP用于跨域请求,这必须在两端实现


    克服这一问题的一个好方法是使用您自己的站点作为代理。对您这边的脚本执行AJAX请求,并让它执行调用。在PHP示例中,您可以使用cURL,默认情况下,由于同源策略,AJAX请求将失败

    现代技术允许CORS(见尼古拉斯的artilce)

    jQuery的Ajax允许CORS

    另一种方法是获取内容并动态生成脚本元素,并在head.firstchild上执行insertBefore(请参阅jQuery 1.6.4源代码行编号:7833) 谷歌分析代码也做了一些类似的事情。你可能也想看看这个

    干杯。。
    Sree

    我不会用这种方法解决这个需求。插件/自定义工作流活动更合适。PASPHASE=md5(“密码”+“numberOfreceiver”)我也认为这不太安全。。但是如果我在服务器站点上发送,源代码将不可见。我想只有当有人在你的网络上使用嗅探工具时,它才会“可见”?
    mygetrequest.open("GET", "http://api.smsaction.be/push/?nichandle=" ......