Javascript API在主站点上运行良好,但在外部服务器上无法正常工作
Javascript API is working fine on the main site, but fails to work on an external server
此代码可以与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。
相关文章:
- Javascript:selenium Web驱动程序isDisplayed()不工作
- jQuery UI自动完成突然停止工作
- AngularJS UI路由器不能像ng路由器那样工作
- HTML5音频加载和播放获胜'我不能在iPad上工作
- JavaScript打印功能使日历停止工作
- Javascript.getHours()工作不正常
- 为什么这在IE中的工作方式与在Firefox中不同
- 视频HTML没有'无法在Internet Explorer 11上工作
- 扩展移相器按钮类不工作
- Firebase迁移-简单的Firebase.set没有'不再工作了——旧的还是新的
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- 正在尝试使用if和else添加类,但无法正常工作
- Jquery FadeIn FadeOut 只工作一次
- Foreach无法在Typescript中工作
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 为什么不是't窗口.恢复正常工作吗?(javascript/jquery)
- JS可以在Chrome中工作,但不能在Firefox中工作
- ajaxToolkit PopupControlExtender不工作.过时的
- HTML标记在脚本标记中工作
- javascript扫雷器floodfill算法不能正常工作