Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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
Jquery $.get-不允许使用源代码_Jquery_Ajax_Macos_Google Chrome - Fatal编程技术网

Jquery $.get-不允许使用源代码

Jquery $.get-不允许使用源代码,jquery,ajax,macos,google-chrome,Jquery,Ajax,Macos,Google Chrome,今天,我在尝试使用$获取服务器上的PHP文件内容时遇到了一个非常奇怪的错误 它只出现在MacOSX(雪豹)上的Safari和Chrome中,在Windows上,它在所有浏览器中都能正常工作 该函数类似于: function _fc() { $.get("_x_fc.php", { xaction: 'login', xv1: $('#login').attr("value"), xv2: $('#pass').attr("value") }, function (data) {

今天,我在尝试使用
$获取服务器上的PHP文件内容时遇到了一个非常奇怪的错误

它只出现在MacOSX(雪豹)上的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无法加载
http://www.asking1.com/_x_fc.php?xaction=login&xv1=something&xv2=something.
起源http://asking1.com 访问控制允许原点不允许。

您的答案在错误消息中:

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. 无法加载XMLHttpRequest http://www.asking1.com/_x_fc.php?xaction=login&xv1=something&xv2=something. 起源http://asking1.com 访问控制允许原点不允许。
http://www.asking1.com
http://asking1.com
是不同的原产地,因此这与同一原产地政策相冲突。参见第六个示例

如果您的代码确实是引用的,并且带有相对URL,则不应该发生这种情况,因为从错误消息中,文档是在
http://asking1.com
,因此相对路径将解析为
http://askign1.com/_x_fc.php
,这很好

如果代码中有绝对路径,那就是问题所在。只需删除它,使其看起来像引用的代码


如果您的代码真的有相对路径,那么您需要深入研究一下。某个地方的某些东西让浏览器认为对
www.asking1.com
内容的请求来自
asking1.com

www
从技术上讲是一个子域。因此,您违反了
同一原产地政策
。您可以通过设置

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,以确保它是相同的。

我这样做:

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

你们是最棒的。谢谢。

当你们说这只发生在Mac OS X上时,你们指的是客户端操作系统,对吗?在Mac OS X测试和Windows测试中,这是同一台服务器?我知道这是不同的浏览器,但在这两种浏览器中,我的代码都不起作用。我的服务器基于Unix,我只在Windows和Mac OS X上测试。完整错误-请参阅已编辑的问题但如果OP正在为
$.get
调用设置绝对路径,则这只是一个问题,因为他们正在设置相对路径,在这种情况下,实际域将永远不会不同,除非有一个.htaccess文件重定向请求。@Gavin:True——假设引用的代码是准确的(遗憾的是,我经常看到代码被编辑得更短,从而编辑出错误)。不管怎样,错误消息清楚地表明这是一个SOP问题。