2016-05-14 68 views
0

我试图连接到外部POST api进行身份验证。 我想:从角度连接到REST API

$http({ 
    method : 'POST', 
    url  : 'myURL', 
    data : {"j_username": "myUserName,"j_password": "myPassword"}, 
    headers : { 
     'Content-Type': 'application/x-www-form-urlencoded', 
    } 
}) 

但我发现了这个错误:

的XMLHttpRequest无法加载http://...url。预检的响应为 无效(重定向)

+0

也许dup http://stackoverflow.com/q/33660712/367865 – Ouroborus

+0

错误是告诉你,当请求时这个URL重定向到另一个。选中此[回答](http://stackoverflow.com/a/36221621/1488993)以获取更多详细信息。 – Doon

+0

你有一个缺少“myUserName后标记太 – rrd

回答

2

这看起来像是一个CORS问题。 如果JavaScript是从不同的域中提供的,那么您将遇到CORS问题。简而言之,浏览器会检测到javascript是从域A提供的,并且API是在域B.接下来发生的事情取决于您正在尝试做什么,在这种情况下您正在执行POST,这意味着浏览器将会发送一个预检检查到API服务器,询问是否可以使用来自域A的JavaScript访问它。 为了让浏览器允许请求通过,服务器必须回答“是”(实际上它比“说是”要复杂得多,但你明白了)。

总之,您需要配置API服务器以允许这样做。如果它不是你的API,那么你需要询问谁拥有该API,如果他们可以配置CORS以允许你的JavaScript访问它。

如果您确实需要使用这种设置,那么值得花时间阅读并理解它。另一方面,也许你只是用一个本地js文件加入一些东西,在这种情况下,你只需要知道它不会像那样工作。请参阅https://stackoverflow.com/a/23824093/11534

+0

服务器没有回应说*”是“* ....这是如何CORS工作的简单化 – charlietfl

+0

@charlietfll - 绝对同意我只是想解释的基本问题: ) – Frans

+0

我需要做更多的配置吗? –