当前位置: 首页 > 面试题库 >

AngularJS和跨域POST

周学义
2023-03-14
问题内容

我对带有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://