首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跨域请求

跨域请求
EN

Stack Overflow用户
提问于 2011-07-12 22:26:55
回答 4查看 778关注 0票数 4

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

网页地址:someotherdomain.com

代码语言:javascript
复制
<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加载的脚本

代码语言:javascript
复制
Test = { 
    testAjax: function() {
        //make ajax request to http://mydomain.com/myendpoint
    }
}

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

EN

回答 4

Stack Overflow用户

发布于 2011-07-12 22:30:54

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

不是的。原点始终是页面,而不是脚本。

票数 2
EN

Stack Overflow用户

发布于 2011-07-12 22:35:40

我做错了什么?

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

什么是正确的方法?

有两种可能性:

  1. 将正在运行的脚本和被调用的脚本放在同一个域中。
  2. 使用dataType = "jsonp"绕过此限制。jQuery将执行一些魔术(将调用替换为<script src="mydomain.com/endpoint" />格式的内联脚本引用),以实现此功能。
票数 2
EN

Stack Overflow用户

发布于 2011-07-12 22:35:41

脚本的原点始终是mydomain.com!您可以使用Ajax代理(通过您的后端),也可以最终使用 (更有可能两者兼而有之,取决于您的需求)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6665780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档