繁体   English   中英

Access-Control-Allow-Origin不允许源,jQuery Mobile

[英]Origin is not allowed by Access-Control-Allow-Origin , jquery mobile

我正在本地服务器上开发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上的任何其他站点访问来自Web服务器的所有响应。 如果打算只允许特定服务器使用主机上的服务,则可以将*替换为原始服务器的URL。

我到底在哪里添加这段代码? 我试图将其添加到httpd.conf但未进行任何更改。

有任何想法吗?

您可以强制Google Chrome浏览器不要抱怨跨域起源。在运行chrome时添加此标志--disable-web-security可以使您成功进行测试。 我已将其添加到桌面上Chrome快捷方式的目标变量中,如下所示:

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

因此,每次我启动Chrome时,它将自动启动并带有此标志,并且我可以测试跨域Ajax调用而不会出现任何问题。

重新阅读您提供的Apache设置的说明:

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

换句话说,这种设置使Apache服务器接受服务器上托管资源的所有传入的跨域请求。

但这不是您想要的。 您想通过跨域请求访问Google服务器上资源。 如果这些资源允许,您将只能访问它们。 幸运的是,Google日历具有一个API,可让您通过提供的方法访问日历。 您应该在这里查看

您应该在PHP服务器上启用CORS,然后尝试在其中使用以下代码:

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

可在此处找到有关如何在服务器上启用CORS的更多信息: http : //enable-cors.org/server_php.html

但是请考虑一下,如果您从无法控制且未启用CORS的服务器上请求信息,则无法从JavaScript进行AJAX调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM