' Access-Control-Allow-Origin' header的值不等于提供的原点

时间:2016-06-26 21:07:50

标签: php ajax api cors

我正在尝试使用ajax登录API,我收到此错误:

  

XMLHttpRequest无法加载。 ' Access-Control-Allow-Origin'头   具有不等于提供的原点的值。起源   ' http://localhost'因此不允许访问。

我在互联网上阅读了有关此错误的所有内容,并且我已经尝试了所有可以在网上找到的解决方案。我根据CORS指令修改了.htaccess和apache httpd配置文件:http://enable-cors.org/server_apache.html

Access-Control-Allow-Origin: *

似乎没有任何效果。如果你们能帮我解决这个问题,我真的很感激。谢谢!

4 个答案:

答案 0 :(得分:2)

您必须将 Access-Control-Allow-Origin标头设置为*或指定值 http://localhost

您可以通过以下方式执行此操作:

1-您的代码

2- .htaccess文件

3-服务器配置(需要重新启动Web服务器)

以下是显示如何在apache上执行此操作的链接

http://access-control-allow-origin-guide.com/enable-cors-on-apache-linux/

答案 1 :(得分:0)

我使用htaccess文件在不同的托管中加载JSON数据,但它可以正常工作

它必须放在我们的网络托管的公共html根目录中,例如

  

将.htaccess上传到 - > (https://freehostingsomewhere.com/

然后在.htaccess里面

<FilesMatch "\.(ttf|otf|eot|woff|jpg|png|jpeg|gif|js|json|html|css)$">
  <IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "http://localhost"
  </IfModule>
</FilesMatch>

在这里我使用http://localhost进行开发,它可以正常工作,

也许如果我有另一个网站主机只需将其更改为该网址,我会稍后再尝试(它可以,我已经尝试了):p

这只是为了更清楚的解释

欢呼:p

答案 2 :(得分:0)

添加浏览器安全性,除非API允许返回响应标头中的跨浏览器来源,否则无法解决此问题。

浏览器阻止它,有plugin允许使用Chrome,但依赖浏览器插件来允许最终用户请求是不现实的,

尝试并与API提供商联系,看看他们是否可以考虑更新回复中的标题。

这是一个CORS问题: https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

答案 3 :(得分:0)

您的请求是否有机会使用Cookie或授权?

如果您要将其配置为“使用凭据”,请检查客户端的ajax呼叫

.withCredentials = true;

如果是,则通配符(*)将不起作用,您需要提供确切的主机作为Access-Control-Allow-Origin的值。

请参阅this stack overflow answerMozilla Documentation on CORS