2017-07-14 172 views
1

我正在使用AngularJS,node.js,express.js,wso2和Twitter API在Twitter和我的应用程序之间进行通信。 即将到来的问题,我试图从我的应用程序发送一条消息到Twitter使用wso2连接到Twitter并发送响应。预检的错误请求/响应具有无效的HTTP状态代码400

下面是将消息发送到Twitter帐户,并成功地利用邮递员,但我尝试在我的应用程序它给了预检错误的请求/响应的时刻发布的XML无效HTTP状态码400

<?xml version="1.0" encoding="UTF-8"?> 
    <proxy xmlns="http://ws.apache.org/ns/synapse" 
    name="tweetReply" 
    startOnLoad="true" 
    statistics="disable" 
    trace="disable" 
    transports="http"> 
<target> 
    <inSequence> 
    <property expression="json-eval($.screen_name)" name="screen_name"/> 
    <property expression="json-eval($.text)" name="text"/> 
    <log level="full"> 
     <property name="INIT" value="##### Subas - Call to the Proxy 
    #####"/> 
    </log> 
    <twitter.init> 
     <consumerKey>some keyt</consumerKey> 
     <consumerSecret>some secret</consumerSecret> 
     <accessToken>access-token</accessToken>    
     `<accessTokenSecret>access-token-secret</accessTokenSecret>` 
    </twitter.init> 
    <twitter.sendNewDirectMessages> 
     <screenName>{$ctx:screen_name}</screenName> 
     <text>{$ctx:text}</text> 
    </twitter.sendNewDirectMessages> 
    <property name="messageType" scope="axis2" value="application/json"/> 
    <respond/> 
    </inSequence> 
    </target> 
    <description/> 
    </proxy> 

当我产生从上面的XML它工作正常的网址,下面是对此我,当我们产生形成上述XML

http://hostname:8280/services/tweetReply.tweetReplyHttpEndpoint 

,并请求负载将获得网址:

{ 
"screen_name":"pawan_mks", 
"text":"hello" 
} 

并将消息发送到Twitter,但做与AngularJS同样的事情给我的问题

这里是AngularJS代码我想使用:

$scope.sendReplyMsg = function(replyMessage) { 
     var dataObj = { 
      "screen_name": "pawan_mps", 
      "text": "Hi Pawan From Angular JS" 
     };  
     var headerObj = { 


     headers: { 
      'Access-Control-Allow-Origin': '*', 
      'Access-Control-Allow-Methods':'POST,GET,PUT,DELETE,OPTIONS', 
      'Access-Control-Allow-Headers': 'Authorization,Lang', 
      'Content-Type': 'application/json', 
      'Accept': 'application/json', 
      } 
     }; 

$http.post("http://hostname:8280/services/tweetReply.tweetReplyHttpEndpoint", 
     dataObj, headerObj) 
       .success(function(data, status, headers, config) 
       {     
        console.log(data); 
       }) 
       .error(function(data, status, headers, config) 
       { 
        console.log(status); 
       }) 
      } 
+0

什么是'http:// u /',是否应该是twitter API端点?你为什么要在_your_代码中设置所有这些访问控制标题?您是否在获得400状态码时检查了响应正文中包含的内容? – CBroe

+0

我已更新网址...它与Cross Domain有关,我发现它很难配置它... –

回答

0

此错误消息通常到达时CORS配置存在问题。

如果从本地机器或另一台主机,它是由该后端在您担任将在跨起源错误(CORS)结束了与主机不同测试此。要求后端开发人员在后端启用CORS,在前端没有太多可以做的事情。

解释为什么这个工程上邮递员,而不是在铬是由于Chrome强制CORS的浏览器端的安全性,而不是邮差。

+0

所以基本上你说我需要对WSO2 -Tool进行配置更改,而不是Angular JS的一部分... –

+0

是的,这是正确的 – kisanme

+0

终于解决了这个问题....谢谢 –

相关问题