Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.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
Javascript 跨域请求_Javascript_Html_Ajax_Xss - Fatal编程技术网

Javascript 跨域请求

Javascript 跨域请求,javascript,html,ajax,xss,Javascript,Html,Ajax,Xss,我从mydomain.com加载了一个脚本文件,它向该域发出ajax请求。不过,该脚本被加载到其他一些域中,这些域会初始化它,然后告诉它何时发出请求。但我遇到了一些问题,因为浏览器认为这是一个跨域请求。我认为无论从哪个域加载脚本文件,都能够向该源发出请求?以下是一些代码作为示例: 页面位于someotherdomain.com: <html> <head> <script type="text/javascript" src="http://

我从
mydomain.com
加载了一个脚本文件,它向该域发出ajax请求。不过,该脚本被加载到其他一些域中,这些域会初始化它,然后告诉它何时发出请求。但我遇到了一些问题,因为浏览器认为这是一个跨域请求。我认为无论从哪个域加载脚本文件,都能够向该源发出请求?以下是一些代码作为示例:

页面位于
someotherdomain.com

<html>
    <head>
        <script type="text/javascript" src="http://mydomain.com/test.js"></script>
        <title>Cross-Domain Ajax Test</title>
    </head>
    <body>
        <h1>Test</h1>
        <p id="ajax-response"></p>
        <script type="text/javascript">
          Test.testAjax();
        </script>
    </body>
</html>

我做错了什么?正确的方法是什么

加载javascript时,代码就好像在
someotherdomain.com
上一样,从该域到
mydomain.com
会出现跨域问题

我认为无论从哪个域加载脚本文件,都能够向该源发出请求


否。源代码始终是页面而不是脚本。

脚本的源代码始终是
mydomain.com
!您可以(通过后端)使用Ajax代理,也可以最终使用(更可能两者都使用,这取决于您的需要)

我做错了什么

您的脚本违反了跨域限制,从一个域提供服务,但在另一个域上请求脚本

正确的方法是什么

有两种可能:

  • 将正在运行的脚本和被调用的脚本放在同一个域下

  • 使用
    dataType=“jsonp”
    绕过限制。jQuery将执行一些神奇的操作(用
    格式的内联脚本引用替换调用),以实现这一点


  • 那么google analytics或其他javascript api库是如何进行调用的呢?要么发出只写请求,要么使用JSONP。
    Test = { 
        testAjax: function() {
            //make ajax request to http://mydomain.com/myendpoint
        }
    }