【问题标题】:jquery post: No 'Access-Control-Allow-Origin' header is present on the requested resourcejquery post:请求的资源上不存在“Access-Control-Allow-Origin”标头
【发布时间】:2014-11-04 23:46:18
【问题描述】:

我正在做一个 jquery post 将数据发送到同一域中的 php 文件。

这是部分代码:

    var postData = { "score": score };

    $.post("saveScores.php", postData, function() {  //ERROR POINTS THIS LINE
    .....
    });

我收到此错误消息:XMLHttpRequest 无法加载 http://redirect.main-hosting.com/error404.php/8?domain=quiztest.3eeweb.com。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'http://quiztest.3eeweb.com' 不允许访问。

我已将其托管在子域中。我在标题中添加了 Access-Control-Allow-Origin:

 header("Access-Control-Allow-Origin : http://quiztest.3eeweb.com");  

但这并没有解决问题。

有什么办法可以解决这个问题吗?

谢谢,

【问题讨论】:

  • "error404.php" 对我来说似乎是一个提示,您的网址不正确。
  • @Maerlyn saveScores.php 位于同一目录中。我尝试提供完整的网址:quiztest.3eeweb.com/public/saveScores.php。但即使这样也行不通。我托管在一个免费的子域中。这是造成问题的原因吗?
  • 请记住,Linux 上的文件名区分大小写,大写的“S”可能会导致您在 Windows 上开发时不会遇到的问题。
  • @Maerlyn 谢谢。那是愚蠢的错误。修复它的'。只是想知道为什么重定向 url 看起来像这样:“redirect.main-hosting.com/error404.php/…”。因为在上述行之后,我使用 window.location.href 来重定向页面。但是重定向不起作用。
  • 重定向到 404 是您的主机所做的事情。

标签: javascript php jquery


【解决方案1】:

我缺少其他几个标题。您还必须添加这些标题:

Access-Control-Allow-Headers: Content-Type
Access-Control-Allow-Methods: GET, POST, OPTIONS

当然,还要检查所有 http 位置是否正确。

附录:

Access-Control-Allow-Origin : http://quiztest.3eeweb.com 中删除http:// 部分,例如Access-Control-Allow-Origin : quiztest.3eeweb.com

【讨论】:

  • 感谢您的回答。我现在将测试您的建议。
  • 我进行了更改,但没有帮助。 header("Access-Control-Allow-Origin : quiztest.3eeweb.com"); header("Access-Control-Allow-Headers: Content-Type"); header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
  • 您检查并仔细检查了您发布到的位置吗?最好先解决这个问题。
【解决方案2】:

看起来您的网站主机正在执行某种奇怪的重定向。

这是 ajax 请求试图加载的内容: http://redirect.main-hosting.com/error404.php/8?domain=quiztest.3eeweb.com

我无法告诉你他们为什么这样做,但很可能,这不是你可以解决的。寻找更好的主机。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-10
    • 2018-05-11
    • 2013-11-29
    • 2014-07-28
    • 2014-01-19
    相关资源
    最近更新 更多