相关疑难解决方法(0)

尝试从REST API获取数据时,请求的资源上不存在"Access-Control-Allow-Origin"标头

我正在尝试从HP Alm的REST API中获取一些数据.它适用于小卷曲脚本 - 我得到了我的数据.

现在使用JavaScript,fetch和ES6(或多或少)似乎是一个更大的问题.我一直收到此错误消息:

无法加载Fetch API.对预检请求的响应未通过访问控制检查:请求的资源上不存在"Access-Control-Allow-Origin"标头.因此,不允许来源" http://127.0.0.1:3000 "访问.响应具有HTTP状态代码501.如果不透明响应满足您的需要,请将请求的模式设置为"no-cors"以获取禁用CORS的资源.

我知道这是因为我试图从我的localhost中获取该数据,解决方案应该使用CORS.现在我以为我确实这样做了,但不管怎么说它要么忽略我在标题中写的内容,要么问题是别的什么?

那么,是否存在实施问题?我做错了吗?遗憾的是我无法检查服务器日志.我真的有点卡在这里.

function performSignIn() {

  let headers = new Headers();

  headers.append('Content-Type', 'application/json');
  headers.append('Accept', 'application/json');

  headers.append('Access-Control-Allow-Origin', 'http://localhost:3000');
  headers.append('Access-Control-Allow-Credentials', 'true');

  headers.append('GET', 'POST', 'OPTIONS');

  headers.append('Authorization', 'Basic ' + base64.encode(username + ":" + password));

  fetch(sign_in, {
      //mode: 'no-cors',
      credentials: 'include',
      method: 'POST',
      headers: headers
    })
    .then(response => response.json())
    .then(json => console.log(json))
    .catch(error => console.log('Authorization failed : ' + error.message));
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Chrome.我也尝试使用Chrome CORS插件,但后来我收到另一条错误消息:

当请求的凭据模式为"include"时,响应中"Access-Control-Allow-Origin"标头的值不能是通配符"*".因此,不允许来源" http://127.0.0.1:3000 "访问.XMLHttpRequest发起的请求的凭据模式由withCredentials属性控制.

javascript api cors preflight fetch-api

345
推荐指数
11
解决办法
82万
查看次数

Angular HttpClient 授权标头已创建但消失

问题

我正在尝试发送请求标头,特别是授权标头。授权标头应如下所示: Authorization: Basic NTY2MTI0Og==在标头列表中。whereBasic表示是base64编码的。

我很肯定它确实被添加到了在 Angular 中提出的 get 请求中: Request in Angular。 虽然我不确定是什么op。(顺便说一句,我还不允许嵌入图像)

它应该是这样的:来自标准的 Datasnap Delphi 项目

这是我的样子:在此处输入图片描述

如您所见,缺少 Authorization 标头。

错误

控制台错误:截图

Fiddler Raw 请求:截图

这就是我创建 Rest 调用的方式:

public authRestCall(auth: string): Observable<string> {
  var headers = new HttpHeaders;
  //HttpHeaders is immutable
  headers = headers.append('Authorization', 'Basic ' + auth);
  return this.http.get<string>(this.localUrl + 'DSAdmin/GetPlatformName', {headers: headers});
}
Run Code Online (Sandbox Code Playgroud)

选择

我尝试这样做的另一种方法是创建一个这样的对象,在Angular 指南中描述

const httpOptions = {
  headers: new HttpHeaders({
  'Authorization': 'NTY2MTI0OnVuZGVmaW5lZA==' …
Run Code Online (Sandbox Code Playgroud)

delphi authorization http-headers ionic-framework angular

5
推荐指数
1
解决办法
696
查看次数

CORS 策略已阻止在“http://....”源“http://localhost:4200”处访问 XMLHttpRequest

我正在尝试调用一个 api,在那里我遇到了 CORS 错误。

当我尝试使用 "https://...." 时,我遇到了以下服务失败的错误。

状态代码:422。

选项https://xyz/login?username=xxx&password=xxx 422 (Unprocessable Entity) 访问 XMLHttpRequest at ' https://xyz/login?username=xxx&password=xxx ' from origin ' http://localhost:4200 '被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。

当我尝试使用“http://....”时,出现以下错误。

状态代码:307 临时重定向

CORS 策略阻止了在 ' http://xyz/login?username=xxx&password=xxx '处访问 XMLHttpRequest,来自源 ' http://localhost:4200 ' 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:重定向不允许用于预检请求。

我尝试添加标题,但添加的标题不会显示在浏览器上。

请求标头如下所示:

显示临时标头 Access-Control-Request-Headers: content-type Access-Control-Request-Method: POST Origin: http://localhost:4200 Referer: http://localhost:4200/login User-Agent: Mozilla/ 5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36

请帮我解决问题,

我的 component.ts 看起来像这样

import { FormControl, FormGroup, FormGroupDirective, NgForm, Validators, FormBuilder } …
Run Code Online (Sandbox Code Playgroud)

angular-material angular

3
推荐指数
2
解决办法
3万
查看次数