跨域请求

Cross domain requests

本文关键字:请求      更新时间:2023-09-26

我有一个从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>

mydomain.com加载脚本

Test = { 
    testAjax: function() {
        //make ajax request to http://mydomain.com/myendpoint
    }
}

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

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

。起始总是页面而不是脚本。

我做错了什么?

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

正确的方法是什么?

有两种可能:

  1. 将正在运行的脚本和被调用的脚本放在同一个域中

  2. 使用dataType = "jsonp"绕过限制。jQuery将执行一些魔术(将调用替换为<script src="mydomain.com/endpoint" />格式的内联脚本引用)以使此工作。

脚本的原点将永远是mydomain.com !您可以使用Ajax代理(通过您的后端)或最终JSONP是您的方式(更可能是两者都有,取决于您的需要)。

当你加载javascript时,它就好像代码是在someotherdomain.com上,你将有跨域问题从该域到mydomain.com