【问题标题】:Http.post and Ionic Framework problems in method方法中的 Http.post 和 Ionic Framework 问题
【发布时间】:2018-03-07 17:14:00
【问题描述】:

我正在使用 Ionic Framework 版本 3.19.1 开发应用程序,我正在通过 post 发出请求,URL 数据和必要的参数信息都可以,但是,它返回一个我无法解决的错误,我尝试了很多方法,导入到项目中,但没有成功。下面是我的帖子功能。

const req = this.http.post(url, {      
      options: {
        headers:[header],
        params:[postData]
      }
    }).subscribe(
      res => {
        console.log(res);
      },
      err => {
        console.log('Ocorreu um erro');
      }
    )

以下是我在 .ts 文件 (TypeScript) 中的导入

import { Component } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
import { IonicPage, NavController, ToastController } from 'ionic-angular';
import { HttpClient, HttpParams, HttpHeaders, HttpErrorResponse } from '@angular/common/http';
import { IonicStorageModule } from '@ionic/storage';

import { User } from '../../providers/providers';
import { MainPage } from '../pages';

好吧,正如我所说,我正在执行一个发布请求,并且在控制台上,它返回一个 OPTIONS 500(内部服务器错误)

Failed to load (URL): Response to preflight request does not pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http: // localhost: 8100' is therefore not allowed access. The response had HTTP status code 500.

据我了解,报告了有关 Header 的问题,但我已经通知了正确的人并让请求保持打开状态,但它仍然不起作用,这是我的下面的标题。

const header = new HttpHeaders();
    header.set('Access-Control-Allow-Origin', '*');
    header.set('Content-type', 'application/json');

【问题讨论】:

  • 从服务器端,需要给Access-Control-Allow-Origin权限。
  • 我还是外行,怎么办?
  • 你在服务器端使用节点吗?
  • 我相信是的,这就是我所说的,因为我是躺着的,我唯一做的就是去离子框架的站点,然后通过使用节点的 npm 一步一步地安装所以我相信它是同一个节点。
  • 从客户端无法解决这个,在快递服务器中需要添加app.use(cors({ credentials: true, origin: 'http://localhost: 8100' }));

标签: javascript angularjs ionic-framework http-headers http-post


【解决方案1】:

改变const req

return new Promise((resolve, reject) => {

        this.http.post(url, postData,
          {headers: this.header})
          .subscribe(
            data => {
              console.log('success');
              resolve(data);
            },
            err => {
              reject(err);
              console.log(err);}
          );
    });

【讨论】:

  • 我这样做并返回了那个错误:ERROR TypeError: Cannot read property 'ready' of undefined After Then,我传递了res​​olve和reject参数。
  • 我按照你告诉我的方式做了,仍然连续给出相同的错误,即:加载失败(URL):对飞行前请求的响应没有通过访问访问选择: 没有访问访问控制 - Allow-Source 在没有请求资源的情况下存在。 Source 'http://localhost:8100',因此不允许访问。响应的 HTTP 状态代码为 500。然后它给出了这个错误:错误:未捕获(在承诺中):[object Object]。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多