Javascript 在AngularJS中获取CORS错误

Javascript 在AngularJS中获取CORS错误,javascript,php,angularjs,cors,angularjs-http,Javascript,Php,Angularjs,Cors,Angularjs Http,我正在尝试使用一个基于https的API,它在POSTMAN和其他REST客户端中成功运行,但在我的AngularJS应用程序中却没有 下面是代码- var req = { method: 'POST', url: 'https://agXXXXX.com/api/contact/', headers: { 'Content-Type': undefined }, data: user, withCredentials: true

我正在尝试使用一个基于https的API,它在POSTMAN和其他REST客户端中成功运行,但在我的AngularJS应用程序中却没有

下面是代码-

var req = {
    method: 'POST',
    url: 'https://agXXXXX.com/api/contact/',
    headers: {
        'Content-Type': undefined
    },
    data: user,
    withCredentials: true
};
$http(req)
    .then(function(data){
        console.log("--Data--");
        console.log(data);
    })
在阅读了几篇与stack CORS相关的文章之后,我还将其包含在
.config()
中,但运气不好-

$httpProvider.defaults.useXDomain = true;
$httpProvider.defaults.headers.common = {Accept: "application/json, text/plain, */*"};
$httpProvider.defaults.headers.post = {"Content-Type": "application/json;charset=utf-8"};
以下是我面临的错误-


让我知道我做错了什么,或者遗漏了什么。

如果你只需要测试你的应用程序,你可以使用这个chrome插件:

但是,如果您在生产中需要它,则需要配置您的服务器。如果您使用的是SPRING:

HttpServletResponse response = (HttpServletResponse) res;
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "POST,PUT, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Credentials", "true");
        response.setHeader("Access-Control-Allow-Headers", "Authorization,Content-Type");
        chain.doFilter(req, res);

如果您只需要测试您的应用程序,您可以使用此chrome插件:

但是,如果您在生产中需要它,则需要配置您的服务器。如果您使用的是SPRING:

HttpServletResponse response = (HttpServletResponse) res;
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "POST,PUT, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Credentials", "true");
        response.setHeader("Access-Control-Allow-Headers", "Authorization,Content-Type");
        chain.doFilter(req, res);

您应该添加服务器代码头以启用cors

在本网站中,您可以阅读有关它的内容,并根据后端的语言获取实现它的代码:


您应该添加服务器代码头以启用cors

在本网站中,您可以阅读有关它的内容,并根据后端的语言获取实现它的代码:



浏览器不会让JavaScript代码访问该URL,除非其服务器使用允许其访问的访问控制头进行响应。我认为如果是https调用,则不能使用$http。测试方法是保持代码不变,但尝试使用开源http。@JoeLloyd这不是
http
https
的问题,除非源域相同,尝试访问的页面不是http,而是服务。@Pointy请检查屏幕截图,因为服务器正在响应访问控制允许源header@JoeLloyd这不是Http的情况,浏览器不会让JavaScript代码访问该URL,除非其服务器使用访问控制头进行响应这将允许它这样做。我不认为如果它是https调用,您可以使用$http。测试方法是保持代码不变,但尝试使用开源http。@JoeLloyd这不是
http
https
的问题,除非源域相同,尝试访问的页面不是http,而是服务。@Pointy请检查屏幕截图,因为服务器正在响应访问控制允许源header@JoeLloyd如果服务器不接受跨域请求,则Http不是没有帮助的情况。@Ivan你确定插件会像我以前一样帮助我吗提到我将从POSTMAN/REST客户端成功地访问API?是的,我肯定。但这不是一个解决方案,只是一个补丁。您需要配置您的服务器,如果服务器不接受跨域请求,该服务器将不起作用。@Ivan您确定该插件会帮助我吗?正如我前面提到的,我将从POSTMAN/REST客户端成功访问API?是的,我确定。但这不是一个解决方案,只是一个补丁。您需要配置您的serverTL;博士,你能检查一下屏幕截图,让我知道哪个标题丢失了吗?嗯,看起来你添加了那个标题。也许你加了一个打字错误;博士,你能检查一下屏幕截图,让我知道哪个标题丢失了吗?嗯,看起来你添加了那个标题。也许你加错了?