Note that there are some explanatory texts on larger screens.

plurals
  1. PORails 3 and Angularjs Origin http://localhost is not allowed by Access-Control-Allow-Origin.
    primarykey
    data
    text
    <p>First, let me say that I have tried a ton of solutions that have been posted here. None of them seem to work for me. I realize that my problem is stemming from CORS and my rails app's inability to handle the correctly. However, I'm not quite sure how to rectify this issue. I'm hoping someone here can shed some light on this issue.</p> <p>Relevant Code snippets:</p> <p>Rails application_controler.rb</p> <pre><code>class ApplicationController &lt; ActionController::Base protect_from_forgery #before_filter :cors_preflight_check before_filter :allow_cross_domain_access after_filter :cors_set_access_control_headers # For all responses in this controller, return the CORS access control headers. def cors_set_access_control_headers headers['Access-Control-Allow-Origin'] = '*' headers['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS' headers['Access-Control-Max-Age'] = "1728000" end def cors_preflight_check if request.method == :options headers['Access-Control-Allow-Origin'] = '*' headers['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS' headers['Access-Control-Allow-Headers'] = 'X-Requested-With, X-Prototype-Version' headers['Access-Control-Max-Age'] = '1728000' render :text =&gt; '', :content_type =&gt; 'text/plain' end end def allow_cross_domain_access headers['Access-Control-Allow-Origin'] = '*'# http://localhost:9000 headers['Access-Control-Allow-Headers'] = 'GET, POST, PUT, DELETE, OPTIONS' headers['Access-Control-Allow-Methods'] = %w{Origin Accept Content-Type X-Requested-With X-CSRF-Token}.join(',') headers['Access-Control-Max-Age'] = '1728000' end end </code></pre> <p>Angular App.js</p> <pre><code>]).config(function($httpProvider){ delete $httpProvider.defaults.headers.common['X-Requested-With']; }); function loginCtrl ($scope,$http) { $scope.master = {}; $scope.isUnchanged = function(user) { return angular.equals(user, $scope.master); }; $scope.login = function (user) { $http({ method: 'POST', /*url: 'http://localhost/test/quote.php',*/ url: 'http://localhost:3000/api/sessions/', data: user }).success(function(data) { alert("call phonegap store data function:" + data.access_token) }).error(function (data, status, headers, config) { alert("error" ) }); }; </code></pre> <p>}</p> <p>Error message from chorme</p> <pre><code>OPTIONS http://localhost:3000/api/sessions/ 404 (Not Found) angular.js:6730 OPTIONS http://localhost:3000/api/sessions/ Origin http://localhost is not allowed by Access-Control-Allow-Origin. angular.js:6730 XMLHttpRequest cannot load http://localhost:3000/api/sessions/. Origin http://localhost is not allowed by Access-Control-Allow-Origin. </code></pre> <p>Error message from rails server</p> <pre><code>Started OPTIONS "/api/sessions/" for 127.0.0.1 at 2013-11-03 22:30:54 -0500 ActionController::RoutingError (uninitialized constant SessionsController): activesupport (3.2.13) lib/active_support/inflector/methods.rb:230:in `block in constantize' activesupport (3.2.13) lib/active_support/inflector/methods.rb:229:in `each' activesupport (3.2.13) lib/active_support/inflector/methods.rb:229:in `constantize' actionpack (3.2.13) lib/action_dispatch/routing/route_set.rb:69:in `controller _reference' ..... ....C:/Ruby/lib/ruby/2.0.0/webrick/httpserver.rb:138:in `service' C:/Ruby/lib/ruby/2.0.0/webrick/httpserver.rb:94:in `run' C:/Ruby/lib/ruby/2.0.0/webrick/server.rb:295:in `block in start_thread' Rendered C:/Ruby/lib/ruby/gems/2.0.0/gems/actionpack- 3.2.13/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (0.0ms) </code></pre> <p>Any help with this will be greatly appreciated!</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload