当前位置: 首页 > 知识库问答 >
问题:

角度 2:如何处理预检响应具有无效的 HTTP 状态代码 400。错误请求

赫连华皓
2023-03-14

我试图使用我的洋红色的 Rest api 获取 HTTP GET 请求。

下面是实现相同目的的 angular2 代码!

 public ngOnInit() {
    let headers = new Headers({ 'Accept': 'application/json' });
    headers.append('Authorization', 'Bearer x9a278mu7xoh4k0jkj08doc5j4b3ac22');
    headers.append('Access-Control-Allow-Headers', 'Content-Type');
    headers.append('Access-Control-Allow-Methods', 'GET');
    headers.append('Access-Control-Allow-Origin', '*');

    let options = new RequestOptions({ headers: headers });
    return this.http.get('http://10.2.../Mage_ang2/index.php/rest/V1/customers/1',options)
        .map(response => console.log(response.json))
        .subscribe((items: Person[]) => {
            console.log('items: ' + items);
            this.people = items;
        }, error => console.log(error));

 }

我得到(我假设)一个 CORS 问题。

选项 http://10.2.../Mage_ang2/index.php/rest/V1/customers/1

XMLHttpRequest 无法加载 http://10.2.../Mage_ang2/index.php/rest/V1/customers/1。预检响应具有无效的 HTTP 状态代码 500

在谷歌解决方法后,我已经尝试了以下步骤来修复相同的问题,但没有成功。

1)在magento .htaccess文件中,添加了

标头集访问控制允许源“*”

2)在上面添加的角度2代码中,

headers.append('Access-Control-Allow-Headers', 'Content-Type');...

...

3) 尝试从应用程序/json 更改内容类型

let headers = new Headers({ 'Accept': 'application/json' });

我错过了什么。

需要适当的解决方案来解决 CORS(从洋红色 2 到 angular2)问题。

欢迎提出建议!

共有1个答案

费学
2023-03-14
Header set Access-Control-Allow-Origin "*"

从安全角度来看,让全球跨源访问Magento(我知道这是一个购物平台)听起来是一个非常糟糕的主意。

headers.append('Access-Control-Allow-Headers', 'Content-Type'); ...

Access-Control-Allow-Headers 是一个响应标头。服务器必须将其发送到客户端,而不是相反。您的 JS 无法授予自己访问其他服务器的权限。

let headers = new Headers({ 'Accept': 'application/json' });

您是否有理由认为服务器由于您的默认设置而引发错误?

返回并查看错误消息

预检响应具有无效的 HTTP 状态代码 500

然后做一些基础研究来了解什么是预检。

然后做一些基础研究,找出HTTP状态代码500的含义。

所以:

  • 浏览器正在发出选项请求
  • 服务器
  • 响应 500 内部服务器错误(可能是因为它尚未编程为响应 OPTIONS 请求)。

这意味着您需要查看服务器端代码(因此根本不是JS)并确定它为什么会抛出500错误。服务器的错误日志将是开始查找的好地方。

您需要让服务器按照 CORS 文档中的规则正确响应 OPTIONS 请求。

(或者,使用相同的说明,您可以尝试首先阻止浏览器发出预检请求,这可能就像删除所有尝试在不属于请求的请求上设置 CORS 响应标头一样简单)。

 类似资料:
  • 我正在尝试使用Ajax进行REST调用(POST)。这是我的AJAX代码 最初,我得到了这个错误:XMLHttpRequest无法加载http://localhost:port/service/myservice。对preflight请求的响应未通过访问控制检查:请求的资源上没有“access-control-allow-origin”标头。因此不允许访问源“null”。响应的HTTP状态代码为4

  • 问题内容: 大家。我是Angular 2和Spring框架的新手。我正在尝试使用授权标头(基本auth)进行简单的get请求。 我正在使用Spring Boot(1.2.6.RELEASE),这也可能是相关的。我的CORS配置如下所示。 这是客户端的外观 我不断得到: XMLHttpRequest无法加载 http:// localhost:8080 / api / login?username

  • 我知道这里已经有很多相同的解决问题, 但不幸的是,它们都没有帮助我:-( 这里是我的问题: 我尝试从本地主机连接到服务器上的REST服务。使用FF REST插件可以正常工作,但我的应用程序会导致以下错误: 选项 http://.../my_REST_Service/ 401 (未经授权) XMLHttpRequest 无法加载 http://.../my_REST_Service/。 印前检查的响

  • 问题内容: 我正在使用ionic框架和angularjs,我使用chrome来查看日志,但是在这里,我正在执行一个登录页面,我试图发布用户输入的数据来提供服务,但是却出现了此类错误。 而且这是 阅读一些博客后的下一个错误,我认为这是一个CORS扩展,从该扩展允许我尝试过ajax请求,但是我无法找到为什么会出现这两个错误。这是我的代码 https://plnkr.co/edit/Dz0aFsLqoQ

  • 我使用作为服务器端的Spring-boot并提供一个虚拟服务进行测试 其中我的serviceCaller.java=

  • 所有人。我是Angular 2和Spring框架的新手。我正在尝试一个带有授权头(基本身份验证)的简单get请求。 我使用的是Spring Boot(1.2.6.Release),这也可能是相关的。我的CORS配置如下所示。 帮帮我,我不知道我错过了什么...我已经查了很多帖子,但都没找到。

  • 我在angular 2中使用以下头对服务器进行API GET调用。我的angular 2代码如下: 我的spring boot CORS代码如下:

  • 我知道有很多这样的问题,但我见过没有一个能解决我的问题。我已经使用了至少3个微框架。它们在执行一个简单的POST时都失败了,该POST应该返回数据: angularJS客户端: SlimPHP服务器: 我已经启用了CORS,并获得了工作请求。html使用服务器发送的JSON内容进行更新。然而我得到了一个 每次我试着用POST。为什么?