Javascript API在主站点上运行良好,但在外部服务器上无法正常工作

Javascript API is working fine on the main site, but fails to work on an external server

本文关键字:常工作 工作 服务器 站点 主站 API 运行 Javascript 外部      更新时间:2023-09-26

此代码可以与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,谷歌和Facebook都可以做到,那么为什么我不能呢?
编辑
好的,谢谢。但这仍然是一个问题。
用户在主站点上有会话,告诉网页他们已登录。
使用此代码,我可以对其进行测试。

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

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

原产地 http://externalserver.com 不允许 访问控制允许源。

  • 这是一个跨域 ajax 问题(阅读更多:同源策略、跨域请求(

如果您的 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。