Welcome Guest, Not a member yet? Register   Sign In
CI4.0.3 Error CORS ON GET
#1
Bug 

I am using REST API but much problems with CORS in apache + ubuntu 16.0.4.

I have errors CORS when my application (AngularJS) try to do the GET and don't have the '?' on end of URL.  Example: GET api.xxx:8080/controller?/

Anybody have solution to this?

My APP.php

public $uriProtocol = 'REQUEST_URI';
public $indexPage = '';

My .htaccess
Code:
# Disable directory browsing
Options All -Indexes

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
    Header set Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS"
    Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token"
</IfModule>

# ----------------------------------------------------------------------
# Rewrite engine
# ----------------------------------------------------------------------

# Turning on the rewrite engine is necessary for the following rules and features.
# FollowSymLinks must be enabled for this to work.
<IfModule mod_rewrite.c>
    Options +FollowSymlinks
    RewriteEngine On

    # If you installed CodeIgniter in a subfolder, you will need to
    # change the following line to match the subfolder you need.
    # http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase
    # RewriteBase /

    # Redirect Trailing Slashes...
    RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Rewrite "www.example.com -> example.com"
    RewriteCond %{HTTPS} !=on
    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
    RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]

    # Checks to see if the user is attempting to access a valid file,
    # such as an image or css document, if this isn't true it sends the
    # request to the front controller, index.php
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]

    # Ensure Authorization header is passed along
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>

<IfModule !mod_rewrite.c>
    # If we don't have mod_rewrite installed, all 404's
    # can be sent to index.php, and everything works as normal.
    ErrorDocument 404 index.php
</IfModule>

# Disable server signature start
    ServerSignature Off
# Disable server signature end
Reply
#2

We were having similar issue while using Nuxt(VueJs) framework. Apparently it was resolved by doing proxy config in the Nuxt app itself. So probably you need to similarly apply proxy config for calling cross domain apis from your Angular app, nothing much is required on CI end I guess.
Bhaumik Kothari

ADEPTSTATION LLP
https://adeptstation.com
Reply
#3

I need create one proxy? Or only change any config in CI.
I am developer and never config one proxy.
Reply
#4

(This post was last modified: 09-07-2021, 03:06 AM by 2k10cs86.)

Hello,

I have followed what you have mentioned that this CORS issue is resolved by angular proxy, I have created a simple proxy and giving me the below error:
Code:
[HPM] Error occurred while trying to proxy request /api/v1/login from localhost:4200 to http://localhost:8080 (ECONNREFUSED) (https://nodejs.org/api/errors.html#errors_common_system_errors)


In browser console:
Code:
Backend returned code 504, body was:  Error occured while trying to proxy to: localhost:4200/api/v1/login


Where 
Code:
ECONNREFUSED (Connection refused): No connection could be made because the target machine actively refused it. This usually results from trying to connect to a service that is inactive on the foreign host.


And here is the proxy:
Code:
{
  "/api/*": {
    "target": "http://localhost:8080",
    "secure": false,
    "changeOrigin": true,
    "logLevel": "debug"
  }
}

Any idea whats wrong with that?
Reply




Theme © iAndrew 2016 - Forum software by © MyBB