首页 文章

Angular CORS选项不起作用[重复]

提问于
浏览
0

这个问题在这里已有答案:

我有一个从我的本地主机运行的角度应用程序,并试图通过POST访问另一个域中的REST URL . 我在http请求中发送“Content-Type”和“Authorization”标头 . 所以我想由于Authorization标头,这个请求得到一个OPTIONS检查 .

这些是我的 Request Headers

接受:/
Accept-Encoding:gzip,deflate,sdch
接受语言:EN-US,EN; Q = 0.8
访问控制请求报头:授权,内容类型
访问控制请求-方法:POST
连接:保持活跃
主持人:tmatxx101:8080
原产地:http://localhost:4200
推荐人:http://localhost:4200/search
User-Agent:Mozilla / 5.0(Windows NT 6.3; Win64; x64)AppleWebKit / 537.36(KHTML,类似Gecko)Chrome / 58.0.3029.110 Safari / 537.36

这些是我的 Response Headers

访问控制允许的凭据:真
访问控制允许报头:内容类型,接受授权
访问控制允许的方法:GET,POST,PUT,DELETE,OPTIONS
Access-Control-Allow-Origin:http://localhost:4200
访问控制 - 最大 - 年龄:1800
内容长度:0
日期:2017年5月18日星期四,格林威治标准时间12:49:06
设置Cookie:JSESSIONID = 199td8fal1ak21ix0kgjljrqgp;路径= / BPM;仅Http

General section

请求网址:http://tmatxx101:8080/bpm/rest/process/start/xxxxxx.bpm.xpdl/xxxxx/1.0.0.20170517150430523
请求方法:选项
状态代码: 401 There is no Security Context in the HTTP Session
远程地址:172.16.35.84:8080
推荐人政策:no-referrer-when-downgrade

控制台也包含错误
Response for preflight has invalid HTTP status code 401

我的疑问是,由于Response头包含Access-Control-Allow-Origin和localhost,我应该能够访问该方法,但我仍然得到该错误

访问控制允许的凭据:真
访问控制允许报头:内容类型,接受授权
访问控制允许的方法:GET,POST,PUT,DELETE,OPTIONS
Access-Control-Allow-Origin: http://localhost:4200

我是否应该在Angular代码上做任何事情来完成这项工作,或者我应该联系服务器团队 . 我的Angular代码如下

const headers = new Headers({'Content-Type': 'application/xml', 'Authorization':'Basic xxxx'});

this.http.post(url, jsonRequest, {headers: headers})
     .subscribe(
       (response: Response) => {
         console.log(response.json());
       }
     );

2 回答

  • 0

    尝试将withCredentials设置为true . 例如:

    this.http.post(url, jsonRequest, {headers: headers, withCredentials: true})
     .subscribe(
       (response: Response) => {
         console.log(response.json());
       }
     );
    

    顺便说一句:请求没有 Authorization 标头 .

    编辑:实际上我认为这不会有帮助,服务器可能会返回401.我不认为这是一个CORS问题 . 也许我们错过了一些代码 .

  • 0

    在网址地址栏末尾的Chrome中,有一个图标,您可以在其中取消阻止不安全的内容 . 我认为这是因为它的https试图获得非http api调用 .

相关问题