5

今天我在尝试使用$.get.

它仅在 Mac OS X (Snow Leopard) 上的 Safari 和 Chrome 中发生,在 Windows 上它在所有浏览器中都能正常工作。

函数如下:

function _fc() {
   $.get("_x_fc.php", { xaction: 'login', xv1: $('#login').attr("value"), xv2: $('#pass').attr("value") }, function (data) {

      if (data=='0') { letItGo=true; $('#loginform').submit(); }
      else ...//Do some other checks
   });
}
  • 它不是本地服务器,而是具有现有域的 Web 服务器
  • 我不想执行任何跨域 ajax。两个文件都在同一个目录中。

我找不到任何解决方案。

确切的错误:

XMLHttpRequest cannot load 
http://www.asking1.com/_x_fc.php?xaction=login&xv1=something&xv2=something.
Origin http://asking1.com is not allowed by Access-Control-Allow-Origin.
4

3 回答 3

2

www在技​​术上是一个子域。所以你违反了same-origin policy. 您可以通过设置解决此问题

function _fc() {
   document.domain = "www.asking1.com";
   $.get("_x_fc.php", { xaction: 'login', xv1: $('#login').attr("value"), xv2: $('#pass').attr("value") }, function (data) {

      if (data=='0') { letItGo=true; $('#loginform').submit(); }
      else ...//Do some other checks
   });
}

或者您可以完全限定您作为 AJAX 请求的一部分传递的 URL,以确保它是相同的。

于 2012-07-26T14:10:41.437 回答
2

您的答案在错误消息中:

XMLHttpRequest 无法加载
http://www.asking1.com/_x_fc.php?xaction=login&xv1=something&xv2=something。
Access-Control-Allow-Origin 不允许来源 http://asking1.com。

http://www.asking1.com并且http://asking1.com不同的来源,因此这违反了同源政策。请参阅此处的第六个示例。

如果您的代码确实是引用的,带有相对 URL,那不应该发生,因为从错误消息文档是 on http://asking1.com,所以相对路径将解析为http://askign1.com/_x_fc.php,这很好。

如果您的代码中有绝对路径,那就是您的问题。只需将其删除即可看起来像您引用的代码。

如果您的代码确实具有相对路径,那么您需要深入研究一下。某处某处使浏览器认为对www.asking1.com内容的请求来自asking1.com.

于 2012-07-26T14:09:25.907 回答
0

我是这样做的:

$.get("http://<?php echo $_SERVER['HTTP_HOST']; ?>/_x_fc.php", { xaction: 'login', xv1: $('#login').attr("value"), xv2: $('#pass').attr("value") }, function (data) { (...)

你们是最棒的。谢谢你。

于 2012-07-26T16:56:55.443 回答