Ajax 跨域 PHP 代理 403 错误
Posted
技术标签:
【中文标题】Ajax 跨域 PHP 代理 403 错误【英文标题】:Ajax Cross-domain Php proxy 403 error 【发布时间】:2016-12-26 20:10:35 【问题描述】:我正在尝试使用 this Tread 中所见的 javascript 和 php 代理来使用第三方 Api,我可以使用代理,但我得到的响应始终是:
加载资源失败:服务器响应状态为 403(禁止) http://MYDOMAIN.co/php/ba-simple-proxy.php?url=http://jsonplaceholder.typicode.com/posts&_=1471620448707
我的 javascript 代码是:
function getLocationSimple()
var proxy = 'php/ba-simple-proxy.php',
url = proxy + '?url=' + 'http://jsonplaceholder.typicode.com/posts';
console.log(url);
// Make JSON request.
$.getJSON( url, function(data)
console.log(data);
);
我以为是关于第三方服务器的权限,所以我决定将其更改为开放的-http://jsonplaceholder.typicode.com/posts-,但我仍然遇到同样的错误,可能是我自己的服务器中的权限? -我的主机是hostgator-
【问题讨论】:
http 403错误可能是由于多种原因,您可以查看更多here。问题不在您的getLocationSimple
脚本中,而可能在 php/ba-simple-proxy.php
内部。
【参考方案1】:
让我们试试这段代码
function getLocationSimple()
$.ajax(
type: 'POST',
dataType: 'jsonp',
url: "http://jsonplaceholder.typicode.com/posts"
) .done(function( data )
console.log( data);
);
这是由于跨域策略造成的。 api端不支持跨站访问。所以我们可以使用dataType: 'jsonp'
来解决这个问题
【讨论】:
非常适合我选择的示例!但是,当我在现实生活中的提供程序中使用它时遇到了一个新错误 - > 拒绝执行来自 htttp://XXXXX 的脚本,因为它的 MIME 类型('application/json') 不可执行,并且启用了严格的 MIME 类型检查。有办法解决吗? ***.com/questions/24528211/…【参考方案2】:这与跨域策略有关。由于安全原因,您不能向另一个域发出 ajax 请求,因为恶意攻击还可能涉及通过 ajax 发出请求以加载额外的脚本来攻击您。
尽管 Wikipedia 可能不是提供的最佳链接,但它会给你一个想法。
https://en.wikipedia.org/wiki/Same-origin_policy
【讨论】:
谢谢!我知道这一点,这就是我尝试使用服务器端连接的原因,因此 PHP 代理,干杯!以上是关于Ajax 跨域 PHP 代理 403 错误的主要内容,如果未能解决你的问题,请参考以下文章
admin-ajax.php?action=woocommerce_feature_product 403 错误
通过ajax发送数据时Codeigniter 403禁止错误