我对带有HTTP授权标头的CORS请求有疑问:
在我看来,Web浏览器未通过POST请求发送Authorization标头,是否有解决方法?
这是我的Angular代码:
var app = angular.module('app', [])
.config(['$httpProvider', function($httpProvider) {
$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
}]);
app.controller('ctrl', function ($scope, $http) {
$scope.insert = function () {
$http.post('http://my.api.com/Insert',
{
headers: {
'Authorization': 'Basic dGVzdDp0ZXN0',
'Content-Type': 'application/x-www-form-urlencoded'
},
data: {
'Code': 'test data'
},
withCredentials: true
});
};
});
在服务器端,我在web.config中有这个
<httpProtocol >
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Cache-Control, Pragma, Origin, Authorization, Content-Type, X-Requested-With" />
<add name="Access-Control-Allow-Methods" value="GET,POST,PUT,DELETE,OPTIONS" />
<add name="Access-Control-Allow-Credentials" value="true" />
</customHeaders>
</httpProtocol>
您使用$http.post
不正确。第二个参数是您需要发送到服务器的 数据 ,您不能设置这样的标头。在您的情况下,它将把
整个对象
作为 JSON有效负载 发送 __
试试这个:
$http({
url:'http://my.api.com/Insert',
method:"POST",
headers: {
'Authorization': 'Basic dGVzdDp0ZXN0',
'Content-Type': 'application/x-www-form-urlencoded'
},
data: {
'Code': 'test data'
}
});
问题内容: 我到处都在寻找答案,但到目前为止没有任何效果。事实证明,所有列出的堆栈解决方案都不足够。 我以错误的形式在laravel登录中一无所获,我只得到了标准: Laravel控制器: Laravel路线: of肿的种类不整齐: 我不知道从这里去哪里。我已经尝试了从常规实现到使用laravel- cors软件包通过过滤器和控制器中的_construct进行实现的所有方法。我还走了服务器配置路线
问题内容: 我有一个使用AngularJS构建的简单网站,该网站调用json数据的API。 但是我遇到了跨域起源问题,是否可以解决跨域请求? 错误: XMLHttpRequest无法加载http://api.nestoria.co.uk/api?country=uk&pretty=1&action=search_listings&place_name=soho&encoding=json&list
我有一个简单的网站,我正在用AngularJS构建,它为json数据调用API。 然而,我得到跨域起源的问题,是否有任何围绕这允许跨域请求? 错误: XMLHttpRequest无法加载http://api.nestoria.co.uk/api?country=uk
我想显示数据从API使用angularJS。当在同一台电脑上运行代码时,这段代码工作正常。但是当我试图在另一台电脑上测试时,它显示错误,请求的资源上没有访问控制允许来源的标头。angularjs 我使用的是1.4.8 这是我的密码:
我试图从我的新Angular应用程序中调用REST web服务。当发出请求时,我会得到以下错误: XMLHttpRequest无法加载http://localhost:8080/WebService。请求的资源上没有“访问-控制-允许-来源”标头。因此,不允许访问源“http://localhost”。 我发现这是因为浏览器不允许这样的操作。 编辑我也试着把它添加到我的angular应用程序中:
问题内容: 我在尝试使用跨域请求制作jquery.form时遇到了困难。我在Firefox和Chrome上遇到问题(甚至还没有尝试IE)。 说明:我的整个网站都位于http://www.mysite.com内。但是,我的联系表在另一台服务器上,由http://contact.mysite.com引用。我认为将其放在子域上可以避开有关跨域请求的问题,但显然没有。在Sinatra中实现了http://