Access-Control-Allow-Origin - 尝试从 Wordpress 安装访问 JSON 时出错

Posted

技术标签:

【中文标题】Access-Control-Allow-Origin - 尝试从 Wordpress 安装访问 JSON 时出错【英文标题】:Access-Control-Allow-Origin - Error when trying to access JSON from Wordpress installation 【发布时间】:2015-11-05 12:27:12 【问题描述】:

我尝试使用 javascript (AngularJS) 中的“旧”Json-Api 访问我的博客

现在我收到以下错误:

XMLHttpRequest 无法加载 http://example.com/?json=get_category_index。不 请求中存在“Access-Control-Allow-Origin”标头 资源。因此不允许使用原点“http://localhost:63342” 访问。

看起来很简单。但即使我尝试了以下方法:

将这些行添加到 .htaccess 中:

Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"

将以下行添加到主题的 header.php 和 json-api.php:

<? header("Access-Control-Allow-Origin: *"); ?>

我仍然收到此错误。

【问题讨论】:

【参考方案1】:

您可以在 AngularJS 中使用JSONP

JSONP 用于向不同域的服务器请求数据。

记录在案的here。

【讨论】:

即使主要问题不同(我自己的回答)我更喜欢这个,因为它提供了一个更干净的解决方案。【参考方案2】:

好的。解决了。有点棘手:

我不得不将 ">&lt;? xxx ?&gt;" 更改为 "&lt;?php xxx ?&gt;"

&lt;?” - 部分未呈现为服务器代码,而是像普通 html 一样输出。

【讨论】:

【参考方案3】:

您尝试访问的远程服务器 (JSON) 应该允许 Access-Control-Allow-Origin,而不是您的 Wordpress 主机。

如果它们在同一个服务器中,那么可能是您忘记设置相对 URL,因此当您从 localhost 尝试时,您将无法访问您的网络主机。

【讨论】:

你误会了。我从我的博客 (example.com) 中读取数据

以上是关于Access-Control-Allow-Origin - 尝试从 Wordpress 安装访问 JSON 时出错的主要内容,如果未能解决你的问题,请参考以下文章

PHP没有按顺序执行

跨域请求被阻止 Symfony/AngularJS

C# MVC js 跨域

PHP Ajax 跨域问题最佳解决方案

PHP Ajax 跨域问题最佳解决方案

PHP Ajax 跨域问题最佳解决方案