あなたは期待通りに郵便配達を使って、あなたが回答を得ることができることをあなたのコメントに言及しています。それは良い出発点です。 curlコマンドを使用することによって、端末からのcurl -i -X URL
も正しい応答を返すと考えられます。
郵便配達員が正しく機能する場合は、リクエストを送信する直前にというフライト前のリクエストという別のリクエストが送信され、サーバー側のエンドポイントに対して最小限の確認が行われることに注意する必要があります。
このリクエストはオプションタイプのリクエストです。
まず、あなたはあなたののDispatcherServletがOPTIONS要求を受け入れることを確認する必要があります。あなたは、OPTIONS要求を受け入れるFilter.java
を作成して設定するには、それを構成した後
spring.mvc.dispatch-options-request=true
またはweb.xml
を構成することによって:あなたのような、*.properties
設定ファイルでそれを指定することで、このいずれかを達成することができますCORSフィルター。あなたは、次の例により導くことができる
:最後に
public class CorsFilter implements Filter{
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) throws IOException, ServletException {
if(response instanceof HttpServletResponse){
HttpServletResponse alteredResponse = ((HttpServletResponse)response);
addCorsHeader(alteredResponse);
}
filterChain.doFilter(request, response);
}
private void addCorsHeader(HttpServletResponse response){
//TODO: externalize the Allow-Origin
response.addHeader("Access-Control-Allow-Origin", "*");
response.addHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE, HEAD");
response.addHeader("Access-Control-Allow-Headers", "Authorization, X-PINGOTHER, Origin, X-Requested-With, Content-Type, Accept");
response.addHeader("Access-Control-Max-Age", "1728000");
}
@Override
public void destroy() {}
@Override
public void init(FilterConfig filterConfig)throws ServletException{}
}
、次のinit-のparamsと共にweb.xml
にこのフィルタを追加することを忘れないでください。
<filter>
<filter-name>cors-filter</filter-name>
<filter-class>ai.surge.usrmngmtservice.util.cors.CorsFilter</filter-class>
<init-param>
<param-name>cors.allowed.origins</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.methods</param-name>
<param-value>GET,POST,OPTIONS,PUT</param-value>
</init-param>
<init-param>
<param-name>cors.exposed.headers</param-name>
<param-value>Authorization,Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value>
</init-param>
<!--<init-param>-->
<!--<param-name>cors.preflight.maxage</param-name>-->
<!--<param-value>1800</param-value>-->
<!--</init-param>-->
</filter>
今すぐ準備する必要があります。
'GLOBALS.mismatchUrl'には何が設定されていますか?私はそれが全く理由のない "無効なURL"とは言わないと思います... –
私の悪い、間違ったエラーメッセージを掲載しました。 – Laurens
あなたは郵便配達員で応答を受け取ることができますか? –