0

So basically what happens is:

register:1 Failed to load http://webuilder.app/api/auth/register: Response for preflight is invalid (redirect)
18:06:54.963 form.js?b695:101 Uncaught (in promise) TypeError: Cannot read property 'data' of undefined
    at eval (form.js?b695:101)
    at <anonymous>

So basically laravel is returning 307 error which is internal redirect. I have laravel-cors set up using this package:

https://github.com/barryvdh/laravel-cors

Now the question is why does it happen here's my code:

import Errors from './error.js';

class Form {
  /**
   * Create a new Form instance.
   *
   * @param {object} data
   */
  constructor(data) {
    this.originalData = data;

    for (let field in data) {
      this[field] = data[field];
    }

    this.errors = new Errors();
  }


  /**
   * Fetch all relevant data for the form.
   */
  data() {
    let data = {};

    for (let property in this.originalData) {
      data[property] = this[property];
    }

    return data;
  }


  /**
   * Reset the form fields.
   */
  reset() {
    for (let field in this.originalData) {
      this[field] = '';
    }

    this.errors.clear();
  }


  /**
   * Send a POST request to the given URL.
   * .
   * @param {string} url
   */
  post(url) {
    return this.submit('post', url);
  }


  /**
   * Send a PUT request to the given URL.
   * .
   * @param {string} url
   */
  put(url) {
    return this.submit('put', url);
  }


  /**
   * Send a PATCH request to the given URL.
   * .
   * @param {string} url
   */
  patch(url) {
    return this.submit('patch', url);
  }


  /**
   * Send a DELETE request to the given URL.
   * .
   * @param {string} url
   */
  delete(url) {
    return this.submit('delete', url);
  }


  /**
   * Submit the form.
   *
   * @param {string} requestType
   * @param {string} url
   */
  submit(requestType, url) {
    return new Promise((resolve, reject) => {
      axios[requestType](url, this.data())
        .then(response => {
          this.onSuccess(response.data);

          resolve(response.data);
        })
        .catch(error => {
          this.onFail(error.response.data);

          reject(error.response.data);
        });
    });
  }


  /**
   * Handle a successful form submission.
   *
   * @param {object} data
   */
  onSuccess(data) {
    alert(data.message); // temporary

    this.reset();
  }


  /**
   * Handle a failed form submission.
   *
   * @param {object} errors
   */
  onFail(errors) {
    this.errors.record(errors);
  }
}


export default Form;

class Errors {
  /**
   * Create a new Errors instance.
   */
  constructor() {
    this.errors = {};
  }


  /**
   * Determine if an errors exists for the given field.
   *
   * @param {string} field
   */
  has(field) {
    return this.errors.hasOwnProperty(field);
  }


  /**
   * Determine if we have any errors.
   */
  any() {
    return Object.keys(this.errors).length > 0;
  }


  /**
   * Retrieve the error message for a field.
   *
   * @param {string} field
   */
  get(field) {
    if (this.errors[field]) {
      return this.errors[field][0];
    }
  }


  /**
   * Record the new errors.
   *
   * @param {object} errors
   */
  record(errors) {
    this.errors = errors;
  }


  /**
   * Clear one or all error fields.
   *
   * @param {string|null} field
   */
  clear(field) {
    if (field) {
      delete this.errors[field];

      return;
    }

    this.errors = {};
  }
}

export default Errors;

This code is taken from jeffrey's code which works absolutely fine:

https://github.com/laracasts/Vue-Forms/blob/master/public/js/app.js

So can someone please help me find a solution for why is this happening?

Przemek Wojtas
  • 1,311
  • 5
  • 26
  • 51
  • I'm getting the same response when attempting to access my laravel 5.5 api using axios and the same laravel-cors package. `Failed to load http://my-app.dev/api/: Response for preflight is invalid (redirect)` Did you ever figure out what the issue was? – philthathril May 10 '18 at 02:25
  • Looks my particular problem dealt with how Chrome handles the .dev domain, which is what I use to develop locally. Using an ip instead of the .dev domain fixed my issue. https://stackoverflow.com/questions/33268264/chromethe-website-uses-hsts-network-errors-this-page-will-probably-work-late/38881582 – philthathril May 10 '18 at 03:28

0 Answers0