Jquery 否';访问控制允许原点';请求的资源上存在标头。
在我的Angularjs应用程序中,当我尝试从YouTube发出GET请求时,我遇到了这个问题(No'Access Control Allow Origin)Jquery 否';访问控制允许原点';请求的资源上存在标头。,jquery,angularjs,Jquery,Angularjs,在我的Angularjs应用程序中,当我尝试从YouTube发出GET请求时,我遇到了这个问题(No'Access Control Allow Origin) ... myServices.factory('YouTubeService', function ($resource) { return $resource('http://www.youtube.com/oembed?url=:url', {}, { query: { method: 'GET', isArr
...
myServices.factory('YouTubeService', function ($resource) {
return $resource('http://www.youtube.com/oembed?url=:url', {}, {
query: { method: 'GET', isArray: true },
})
});
...
致电:
YouTubeService.query({url: url}, function(response) {
alert(response)
})
我知道这与从另一个域发出请求有关,但我不知道如何绕过它。关于这个问题已经有很多问题了,但我不能从他们中得到任何东西
我已在我的配置块中尝试了以下操作:
delete $httpProvider.defaults.headers.common['X-Requested-With'];
但这没什么用 在我看来,解决这一问题的最佳方法之一是使用代理–我使用在机器上运行的
nginx
为我想要访问的API创建一个代理,并在nginx
中编写自定义头指令,将头添加到代理的响应中,然后再将其发送到前端
有点像
location /APIProxy {
resolver 8.8.8.8; # or the DNS of your choice
proxy_pass http://<original_api_url>;
proxy_http_version 1.1;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
}
location/APIProxy{
解析程序8.8.8.8;#或您选择的DNS
代理传递http://;
proxy_http_版本1.1;
添加标题“访问控制允许源”*;
添加_头“访问控制允许凭据”“true”;
}
有关更多信息,请参阅。问题在于您尝试调用的服务不允许来自主机的请求。 (即,“访问控制允许原点:*”标题不正确)。最简单的方法是开发一个rest服务器,该服务器将接受请求,然后将其发送到您希望调用的服务。restserver中必须存在以下标头才能正常工作 访问控制允许来源:*(接受来自任何域的请求) 访问控制允许标题:内容类型(允许内容类型标题) 访问控制允许凭据:true(接受cookie和其他凭据) 如果您正在用PHP开发restserver,那么应该在restserver类的构造函数或方法函数的开头添加头(例如public function post()) 这是如何在php中添加标题
`header('Access-Control-Allow-Origin: *');`
header('Access-Control-Allow-Headers:Content-Type')代码>
标题('Access-Control-Allow-Credentials:true')代码>
您可能也想添加一个选项方法在此处签出接受的答案:正确!在我看来,YouTube没有提供您想要访问的内容。抱歉,删除了我的评论-所有内容都指向添加$httpProvider.defaults.useXDomain=true
和删除$httpProvider.defaults.headers.common['X-Requested-With']
但这没有什么区别,所以任何人如何使用Angular发出跨站点请求?不能吗???决定发送到后端(节点)并由其处理。不要使用公开访问的DNS服务器,如8.8.8
。