2016-06-19 9 views
2

Webstormアプリケーションからバックエンドアプリケーションにリクエストを送信しようとしていますが、両方が異なるポートにあります。フロントエンドのangularJSとjava spring 4.2.5で作業しています。バックエンド。私は春のコントローラがSpringでCORSフィルタを有効にする方法4.2

@RequestMapping(value = "/example", method = RequestMethod.POST) 
@ResponseBody 
public String postAppUser(@RequestParam String eg) throws JsonProcessingException { 
     return "ok yes ";   
} 
のように見えます

registerController.factory('registerFactory', function(){ 
    return { 
     getClassification:function($http,tempString){ 
      //TODO add URL 
      var url = "http://localhost:8081/example?eg="+tempString 
      return $http({ 
       method: 'POST', 
       url: url 
      }); 
     } 
    } 
}); 

ようangularJSコントローラが見え

XMLHttpRequest cannot load http://localhost:8081/appUser. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:63342' is therefore not allowed access. The response had HTTP status code 404. 

され、この私のエラーをした後、しかし、CORSアノテーションをCORSフィルタを追加するなど、さまざまなものを試してみました

CORSフィルタを追加しようとしましたが、何も動作していないようです。それがアプリケーションによってピックアップされているかどうかは分かりません。私は設定パスの中にあることを意味します。これは、HTTP呼び出しは次のようになります

<web-app> 
    <display-name>Archetype Created Web Application</display-name> 


    <filter> 
     <filter-name>cors</filter-name> 
     <filter-class>com.myApp.security.CORSFilter</filter-class> 
    </filter> 

    <filter-mapping> 
     <filter-name>cors</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 

</web-app> 

よう

import java.io.IOException;  
import javax.servlet.Filter; 
import javax.servlet.FilterChain; 
import javax.servlet.FilterConfig; 
import javax.servlet.ServletException; 
import javax.servlet.ServletRequest; 
import javax.servlet.ServletResponse; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import org.springframework.stereotype.Component; 

@Component 
public class CORSFilter implements Filter { 

    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { 

     HttpServletRequest request = (HttpServletRequest) req; 
     HttpServletResponse response = (HttpServletResponse) res; 

     response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin")); 
     response.setHeader("Access-Control-Allow-Credentials", "true"); 
     response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); 
     response.setHeader("Access-Control-Max-Age", "3600"); 
     response.setHeader("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With, remember-me"); 

     chain.doFilter(req, res); 
    } 

    public void init(FilterConfig filterConfig) { 
    } 

    public void destroy() { 
    } 
} 

web.xmlが見えます。それは、誰かが私を導くことができれば、私は本当に感謝のアクセスヘッダ

Request URL:http://localhost:8081/appUser 
Request Method:GET 
Status Code:404 Not Found 
Remote Address:[::1]:8081 
Response Headers 
view source 
Content-Length:965 
Content-Type:text/html;charset=utf-8 
Date:Sun, 19 Jun 2016 03:43:40 GMT 
Server:Apache-Coyote/1.1 
Request Headers 
view source 
Accept:application/json, text/plain, */* 
Accept-Encoding:gzip, deflate, sdch 
Accept-Language:en-US,en;q=0.8 
Cache-Control:no-cache 
Connection:keep-alive 
Host:localhost:8081 
Origin:http://localhost:63342 

を許さ含むdoesntの。私は最後の5日間の傾きがこの仕事を得るように思わないので、立ち往生しました。私が参照できるブログ/チュートリアル/ビデオを指すことができるならば

答えて

0

@CrossOrigin(origins = "http://localhost:63342") 

でリクエストメソッドに注釈を付け、CORSを有効にするには、私は自分のアプリケーションで同じ問題をSpring documentation of CORS

UPDATE

を見たことがあり、削除されたCrossOrigin注釈注釈ODと角度サービスJS

delete $http.defaults.headers.common['X-Requested-With']; 

return $http({ 
       method: 'POST', 
       url: '/example'/ + '?eg=' + tempString 
      }); 
+0

に下に追加は、それを試してみました。うまくいきません – user3342812

+0

httpリクエストに必要なオリジナルヘッダが含まれていないのですか? – user3342812

関連する問題