Skype用户名验证 - 无访问控制允许原始标头出现

时间:2016-01-27 13:35:04

标签: angularjs http cross-domain skype

我正在关注另一个SO question来执行Skype用户名验证。当我执行HTTP POST

POST https://login.skype.com/json/validator

数据参数:new_username =' XXX'

使用Postman Chrome插件,我收到以下有效回复。所以,我认为允许执行此API方法

{
  "status": 406,
  "status_text": "valid",
  "data": {
    "markup": "Skype Name not available",
    "alternatives": true,
    "fieldDetails": "<label>Suggestions</label><ul><li><label><input class=\"skypeNameSuggestion\" type=\"radio\" name=\"selectSkypeName\" value=\"keerthivasan.ramanathan1\"/>keerthivasan.ramanathan1</label></li></ul>"
  }
}

但是,当我在角度js服务中执行相同的操作时,我得到以下错误。有人可以解释所涉及的幕后细微差别吗?我确定预检反应失败了。我怎么能通过?如何在Chrome中使用Postman应用程序正常工作?我还对angular

中的http标头进行了配置更改
app.config(['$stateProvider', '$urlRouterProvider','$httpProvider',
  function($stateProvider, $urlRouterProvider, $httpProvider) {
    $httpProvider.defaults.useXDomain = true;
    delete $httpProvider.defaults.headers.common['X-Requested-With'];

错误 XMLHttpRequest无法加载https://login.skype.com/json/validator。对预检请求的响应没有通过访问控制检查:否&#39;访问控制 - 允许 - 来源&#39;标头出现在请求的资源上。起源&#39; http://localhost&#39;因此不允许访问。

有人可以帮助我理解吗?此外,如果有人知道更好的查找选项,如果skype名称使用角度js有效。请让我知道

1 个答案:

答案 0 :(得分:0)

您调用的服务似乎不接受跨域请求。这在Postman中不是问题,因为Postman会获取您提供的信息,然后在服务器端构建和执行请求。

因为您正在使用AngularJS和Spring。尝试在Spring中创建一个新端点,该端点从Angular接收来自body的请求:{data params:new_username =&#39; XXX&#39;}以及从后端发送到https://login.skype.com/json/validator的POST。