0

我正在本地服务器上开发一个 jQuery 移动网页。我正在使用 XAMPP,所以我有一个 Apache 服务器。

我正在尝试在我的页面中导入 Google 日历,但出现错误:

Access-Control-Allow-Origin 不允许来源

我发现了超过一百万个关于它的帖子,我无法理解其中的任何一个。

他们都在谈论我需要添加标题等的 PHP 文件。我没有任何 PHP 文件,它都是 HTML 和 JavaScript。

我还读到,我可以配置 Apache,以便它允许我进行跨域连接。

这里我引用:

如果您使用的是 Apache,只需添加:

<ifModule mod_headers.c>
    Header set Access-Control-Allow-Origin: *
</ifModule>

在您的配置中。这将导致您的网络服务器的所有响应都可以从 Internet 上的任何其他站点访问。如果您打算只允许特定服务器使用您主机上的服务,您可以将 * 替换为原始服务器的 URL。

我到底在哪里添加这段代码?我试图将它添加到httpd.conf但没有任何改变。

有任何想法吗?

4

3 回答 3

0

您可以强制 Google Chrome 不抱怨 Cross-domain-origin(s)--disable-web-security在运行 chrome 时添加此标志将使您能够成功测试。我已将其添加到桌面上 Chrome 快捷方式的目标变量中,如下所示:

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security

因此,每次我启动 Chrome 时,它​​都会使用这个标志自动启动,我可以毫无问题地测试跨域 ajax 调用。

于 2013-08-23T14:00:22.330 回答
0

重新阅读您提供的 Apache 设置的描述:

这将导致您的网络服务器的所有响应都可以从 Internet 上的任何其他站点访问。如果您打算只允许特定服务器使用您主机上的服务,您可以将 * 替换为原始服务器的 URL。

换言之,此设置会导致 Apache 服务器接受所有传入的跨域请求,这些请求来自服务器上托管的资源。

但这不是你想要的。您想通过跨域请求访问Google服务器上的资源。只有在他们允许的情况下,您才能访问这些资源。幸运的是,Google Calendar 有一个 API,允许您通过日历提供的方法访问日历。你应该在这里看看。

于 2013-09-28T16:46:38.997 回答
0

您应该在您的 PHP 服务器上启用 CORS,尝试在此处使用以下代码:

<?php
 header("Access-Control-Allow-Origin: *");

有关如何在您的服务器上启用 CORS 的更多信息,请访问:http: //enable-cors.org/server_php.html

但请注意,如果您从无法控制且未启用 CORS 的服务器请求信息,则无法从 JavaScript 进行 AJAX 调用。

于 2016-07-07T09:31:26.913 回答