簡體   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