【问题标题】:Same Origin Policy Error , jQuery同源策略错误,jQuery
【发布时间】:2013-05-17 05:25:37
【问题描述】:

我正在开发 Web 服务的前端(html-jquery)和后端(php)。我正在使用 XAMPP(Apache) 在我的本地主机中进行开发。我将前端和后端保存在 eclipse 上的不同项目中,只是为了让一切都更干净。

但是,我需要从 jQuery 到 php 服务器进行 ajax 调用(Http Post 请求)。我总是得到错误:XMLHttpRequest cannot load http://193.164.4.112/Server_CityInfo/whereSubscribed.php. Origin http://localhost is not allowed by Access-Control-Allow-Origin.

我查看了该错误,发现它与Same Origin Policy 有关。

我还了解到解决此错误的可能解决方案是使用 CORS、JSONP 或代理。但是,根据错误的定义,我理解只需将文件保存在同一目录中就可以解决问题,对吗?所以我所做的就是将所有前端文件移动到我的后端目录中,并尝试再次运行 html 页面来发出请求。

轰隆隆! 我又遇到了同样的错误。我在这里做错了吗?现在它们在同一个目录中不应该工作吗?

【问题讨论】:

  • “将所有前端文件移动到我的后端目录”是什么意思?
  • 将我的 html 文件与我的 php 文件一起移动,以便它们都在同一个目录中。在我得到我的 html 之前:192.168.2.1/clientSide/example.html 和我的 php:192.168.2.1/服务器端/example.php 。现在我删除了客户端目录并将所有文件移动到服务器端目录。现在一切都很好..

标签: php jquery json http-post same-origin-policy


【解决方案1】:

只需将文件保存在同一目录中即可解决问题

没有。它们必须位于同一来源(协议、主机名、端口)。

你有:

http  193.164.4.112  80 (default for HTTP) 
http  localhost      80 (default for HTTP) 

193.164.4.112 不是localhost,所以你使用了同源策略。

193.164.4.112localhost 可能解析到同一台机器,由同一台网络服务器处理,并提供相同的文件,但浏览器不知道这一点。 URL 必须匹配。

【讨论】:

  • +1。如果我错了,请纠正我,而不是使用绝对 url,相对 url 也可以解决问题
  • 是的,这应该有效(只要答案最后一段中的“可能”是实际发生的情况)
  • 好的,我解决了这样的问题:我在浏览器中输入 localhost/pathToHTML 。相反,我实际上输入了 ip/pathToHTML 并且可以工作!所以最后我可以通过将文件保存在同一目录中来解决这个问题吗?我只有这个问题,因为我在本地尝试并且有这个 localhost vs ip 错误。但是我的用户将在其他电脑上,不会有任何问题吗?
  • 正如我所说,目录无关紧要。这取决于 URL 的本地部分。
猜你喜欢
  • 2011-01-28
  • 2012-08-11
  • 2012-08-22
  • 1970-01-01
  • 2011-07-28
  • 2012-02-20
  • 2012-08-20
  • 2011-01-17
  • 2012-10-30
相关资源
最近更新 更多