如何使用javascript发出跨域http get请求?
我正在尝试在Dynamics CRM 2011中实现sms功能。我已经为此创建了一个自定义活动,并在SMS的形式中添加了一个按钮。按下按钮时,应发送短信 我需要为此发出http请求并传递一些参数。以下是触发的代码:如何使用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) {
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=" ......