使用href:通过另一个域调用javascript函数
设置:使用href:通过另一个域调用javascript函数,javascript,html,Javascript,Html,设置: function register (RegType, CourseID){ var f = document.forms['myForm']; f.RegType.value = RegType; f.CourseID.value = CourseID; f.action = "https://*****"; f.submit(); } 站点A列出了带有注册链接的课程。 此注册链接是一个带有javascript:register('sing
function register (RegType, CourseID){
var f = document.forms['myForm'];
f.RegType.value = RegType;
f.CourseID.value = CourseID;
f.action = "https://*****";
f.submit();
}
站点A
列出了带有注册链接的课程。
此注册链接是一个带有javascript:register('single,'010115')
站点A
注册链接调用预定义的javascript函数,该函数将参数发送到coldfusion页面上的表单。
站点B
需要列出站点A
中的课程,并提供与站点A
相同的注册链接
测试解决方案:
function register (RegType, CourseID){
var f = document.forms['myForm'];
f.RegType.value = RegType;
f.CourseID.value = CourseID;
f.action = "https://*****";
f.submit();
}
我尝试使用以下方法来模拟函数调用:
将调用功能包括在站点B的脚本中
这包括:
- 添加完整的
url
,从而进入cfm
注册页面
- 将函数更改为变量形式(
var register=function(){…}
)
包含锚定
和嵌入式函数调用
发生的错误:
function register (RegType, CourseID){
var f = document.forms['myForm'];
f.RegType.value = RegType;
f.CourseID.value = CourseID;
f.action = "https://*****";
f.submit();
}
单击注册
按钮时,控制台会遇到以下操作:未捕获类型错误:无法设置未定义的属性“值”
代码:
function register (RegType, CourseID){
var f = document.forms['myForm'];
f.RegType.value = RegType;
f.CourseID.value = CourseID;
f.action = "https://*****";
f.submit();
}
这似乎是边界XSS,所以这可能不会起作用。如果任何人对如何通过锚运行javascript函数有任何线索,当脚本来自另一个域时,请分享这些知识
提前谢谢
瑞奇
更新
修复非常简单:表单myForm
需要出现在siteb
上,以便通过js填充和发送数据。
此修复程序的问题是表单位于代码顶部,而不是末尾。
我还可以说,这是一个用于提交数据的隐藏表单。
一旦表单被插入html元素的底部,表单就可以由脚本填充并发送到coldfusion页面,就好像它是从站点A运行的一样
再次感谢你的帮助 您得到的错误与表单中缺少的字段有关,而与任何跨站点调用失败或任何其他奇怪的事情无关。将RegType和CourseID字段添加到表单中(其中一个或两个字段缺失),然后再试一次。一般来说,允许从外部页面执行任意注入的JS是一个非常糟糕的主意。也许我误解了你的用例?如果你在站点B上提供了足够的数据来列出课程,为什么不直接从那里提交注册申请呢?@帕尔帕蒂姆它是。。。复杂的。。这更能让客户满意。@Alvarontoro所以这缺少一张表格。。我将尝试并报告。@Alvarontoro缺少的表单修复了错误,但现在该函数只加载站点A
。除非有办法将参数转发到站点a
上的javascript函数,否则我将把这个函数称为closed。再次感谢。