Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用href:通过另一个域调用javascript函数_Javascript_Html - Fatal编程技术网

使用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。再次感谢。