预检的错误请求/响应具有无效的HTTP状态代码400
问题描述:
我正在使用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);
})
}
答
此错误消息通常到达时CORS配置存在问题。
如果从本地机器或另一台主机,它是由该后端在您担任将在跨起源错误(CORS)结束了与主机不同测试此。要求后端开发人员在后端启用CORS,在前端没有太多可以做的事情。
解释为什么这个工程上邮递员,而不是在铬是由于Chrome强制CORS的浏览器端的安全性,而不是邮差。
什么是'http:// u /',是否应该是twitter API端点?你为什么要在_your_代码中设置所有这些访问控制标题?您是否在获得400状态码时检查了响应正文中包含的内容? – CBroe
我已更新网址...它与Cross Domain有关,我发现它很难配置它... –