2013-10-11 86 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

相关问题