【发布时间】:2013-11-04 20:45:44
【问题描述】:
我对在我的服务器上运行的代码隐藏函数进行了 javascript AJAX 调用,该函数返回到客户端脚本(已启动调用)、带有查询(@987654321)的 url(来自与我不同的域) @?)。返回调用后,将执行以下 JQuery 代码('specific_div' 是页面中的现有 div):
$('#specific_div').load(returned_url);
同时,我收到以下错误消息:
XMLHttpRequest cannot load http://www.web_server_url.com/my_query&callback=?. Origin http://localhost is not allowed by Access-Control-Allow-Origin.
虽然我了解同源策略,但我不太明白为什么在这种情况下我会收到此错误消息,因为 url 是从我的服务器传递的。考虑到它的来源来自同一个域(在本例中为本地主机),浏览器不应该接受它吗,尽管它正在联系另一个域?
【问题讨论】:
-
Shouldn’t it be accepted by the browser, considering that its origin is from the same Domain (local host in this case), although it is contacting another Domain?不可以。您不能向其他域发送请求。 -
CORS 呢?
-
请考虑一下 AJAX 请求是代表客户端发出的。他们将传递任何浏览器 cookie。我可以很容易地制作一个网页,一旦被查看,它就会从您的浏览器向每个已知的银行或金融机构发出 AJAX 请求,请求将资金转移到不正当的帐户或其他东西。如果您当前登录到这些网站中的任何一个,那么您的浏览器将传递 cookie,并且请求将被验证。
-
因此,仅仅因为您从网站读取了 HTTP 响应并不意味着您相信它会代表您进行通信!
-
加载数据服务器端并将其提供给您的客户端。
标签: c# javascript jquery