0

这段代码可以与 jQuery 结合使用,在页面上嵌入一个按钮,让用户共享指向我网站的链接。

<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. 

好吧,我知道这一定是可能的,因为 twitter、google 和 facebook 都可以做到,那我为什么不能呢?
编辑
好的,谢谢。但这仍然是一个问题。
用户在主站点上有会话,告诉网页他们已登录。
使用此代码,我可以测试它。

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

当我登录并运行此代码时,它在主站点上返回 0,但在外部站点上返回 1,好像我只在主站点上测试时才登录

4

1 回答 1

0

Access-Control-Allow-Origin 不允许来源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 标头从 ajax 发送到服务器

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

XMLHttpRequest 无法加载文件名。

  • 是因为您没有在 ajax 请求中指定完整的 url。但它适用于您的主服务器,因为您在同一域本身中运行 php。
于 2013-10-11T13:19:09.333 回答