2013-10-11 87 views
0

此代碼可與jQuery結合使用,以在頁面中嵌入一個按鈕,讓用戶可以與我的站點共享鏈接。JavaScript API在主站點上工作正常,但無法在外部服務器上工作

<div class="button" data-text="Button text" data-url="http://externalserver.com"> 
</div> 
<script src="http://mainserver.co.uk/api.js"></script> 

JavaScript文件必須使用XMLHttpRequest與PHP文件連接到檢查您是否已登錄或沒有,並且然後張貼在我的網站的評論。這很簡單,因爲您需要做的只是點擊它創建的按鈕。或不。
那麼,它的工作原理罰款http://mainserver.co.uk任何頁面上,但我的外部服務器上,它只是顯示控制檯的錯誤,如

XMLHttpRequest cannot load filename. Origin http://externalserver.com is not allowed by Access-Control-Allow-Origin. 

嗯,我知道這一定是可能的,因爲推特,谷歌和Facebook都可以做到這一點,爲什麼我不能?
編輯
好的,謝謝。但這仍然是一個問題。
用戶在主站上有會話,告訴網頁他們已登錄。
使用此代碼,我可以測試該代碼。

<?php 
session_start(); 
header("Access-Control-Allow-Origin: *"); 
if (isset($_SESSION["user"])) 
{ 
    echo "0"; 
} 
else 
{ 
    echo "1"; 
} 
?> 

當我登錄並運行此代碼,它在外部網站主網站上,則返回0,而是1,因爲如果我的主網站上進行測試時,在只登錄

+2

http://en.wikipedia.org/wiki/Same-origin_policy – SLaks

+0

在這裏閱讀更多:http://websitez.com/javascript-cross-domain-post-get/ – Patryk

+0

@SLaks,怎麼辦嘰嘰喳喳,谷歌+和Facebook避免這個? – user2751288

回答

0

來源http://externalserver.com不允許通過 訪問控制允許來源。

如果您的JavaScript運行在example.com和你請求到服務器是example.net。確保它可以讓你的JS是由這頭

<?php header('Access-Control-Allow-Origin: http://example.com/ajax.html'); ?> 

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

(通配符會允許任何域將請求發送到您的主機上運行的網頁。我建議用替換星號你將要運行的腳本上)特定的域

還需要從阿賈克斯發送Origin標服務器

Origin: http://example.com/ajax.html 

XMLHttpRequest無法加載文件名。

  • 是因爲你沒有在你Ajax請求指定完整的URL。但它與你的主服務器一起工作,因爲你在同一個域本身運行php。
+0

Thankyou,但你能告訴我爲什麼外部服務器無法檢測到主服務器上的會話,即使我允許訪問所有域並添加session_start() – user2751288

+0

對不起,你能解釋更多嗎? –

+0

我已編輯我的問題並添加更多詳細信息 – user2751288

相關問題