Angular 2 Http使用基本身份验证获取呼叫

时间:2016-12-07 09:33:09

标签: http angular

有关于同一概念的各种问题,但不知怎的,我无法用Angular 2找出一个简单的HTTP Get调用。

我已经尝试过与邮递员相同的服务,但是它有效,但没有角度服务。

我的代码如下:

Service.js

<script language="js"><![CDATA[
        var log = mc.getServiceLog();
        var requestBody = mc.getProperty("requestBody");
        log.info("Avant de checker l'adresse "+requestBody.city);
        mc.setProperty("addressNonNull",1);
        if (requestBody.street || requestBody.zip || requestBody.city || requestBody.country) {
            if(requestBody.street) {
                mc.setProperty("query.param.street",requestBody.street);
            }
            if(requestBody.city) {
                mc.setProperty("query.param.city",requestBody.city);
            }

            mc.setProperty("addressNonNull",1);
        }

        log.info("crm_create_subtasks_v2 address_value  ==>"+requestBody.street+"|" +requestBody.zip+"|"+requestBody.city);
        ]]>
    </script>   
    <switch source="get-property('addressNonNull')" xmlns:ns="http://org.apache.synapse/xsd">
        <case regex="1.0">
                <header name="Content-Type" scope="transport" value="application/json"/>
                <property name="Content-Encoding" action="remove" scope="transport"/>
                <property name="Authorization" expression="fn:concat('Basic ', base64Encode('user:password'))" scope="transport" type="STRING" xmlns:ns="http://org.apache.synapse/xsd"/>

                <call>
                    <endpoint key="jira_address_exist_v2"/>
                </call>
                <property expression="json-eval($.)" name="check address exist"
                    scope="default" type="STRING" xmlns:ns="http://org.apache.synapse/xsd"/>
                <log>
                    <property name="create_subtasks_v2 response jira_address_exist_v2" expression="json-eval($.)"/>
                </log>

即使我正在设置标题,我也会收到401 Unauthorized错误。

任何帮助?

1 个答案:

答案 0 :(得分:2)

当我使用Angular进行第一次REST调用时,我遇到了完全相同的行为 - 它与Postman合作但与Angular没有合作。

一些浏览者做了一个所谓的&#34;预检&#34;在&#34;真实&#34;之前打电话AJAX调用,这第一次调用导致401 Unauthorized响应。问题是我没有认证就不允许OPTIONS标题。 OPTIONS标题的处理也在限制区域,但验证信息丢失,因此服务器向我发送了401 Unauthorized。

最后,解决方案是在限制区域之外处理OPTIONS请求。因此,客户端现在收到OPTIONS标头请求的OK,并继续使用&#34; real&#34;调用

由于我已经调整了服务器端的请求处理,一切都按预期工作。