2016-04-12 8 views
1

私はこのブログに従っていますpost。しかし、AEM 6.1では403エラーが発生しています。 私は 'Apache Sling Referrer Filter'で変更したくありません。 このエラーは、/libs/granite/csrf/token.jsonを呼び出して取得できるCSRFトークンのために発生していると思います403スリングポストサーブレット

このフォームヘッダーにこのCSRFトークンを追加するにはどうすればよいですか?それとも、それを動作させる他の方法がありますか?

+0

https://stackoverflow.com/questions/39201101/aem-403-forbidden-occurs-when- call-a-post-servlet/39490339#39490339 –

答えて

1

あなたはあなたがフォームを使用するすべてのページでこれを追加することができ、または多分あなたはマスターページの魔女は、すべてのページ

CSRFに継承する必要があり、スタンドアロンタグ

<cq:includeClientLib categories="granite.csrf.standalone" /> 

でCSRFトークンを追加することができますトークンは、形式が送信される前の隠しフィールドです。あなたのページがAEM、これは世界的にアプリケーション内の花崗岩CSRF JSが含まれており、あなたのAEMのtoken.jsonのURLを指すように変更することであろう処理するための一つの方法の外にあるとして、それは

<input type="hidden" name=":cq_csrf_token" value="4a6sd4f6as4df6as.a5s4df6a4sdf674asd96f"></input> 
+0

clientLibsこのhtmlファイルはAEMの外にあり、something.htmlファイルなので使用できません。 –

+0

私はhtml形式で隠し型を追加しましたが、結果は同じです。 –

+0

あなたがaemの外出先である場合、私はやり方を知らない。私は "/libs/granite/csrf/token.json"からトークンを取得できることを知っています。そして、リクエストヘッダーにIDを追加する必要があります。おそらく、それを ":cq_csrf_token"として追加する必要がありますが、わかりません。 –

0

のように見えます。このスクリプトはフォームの投稿を処理し、AJAXはグローバルレベルで呼び出します。

第2に、このスクリプトは、サーバーのURLホストとコンテキストパスに関連するチェックを行います。だからあなたもそれらを無効にする必要があります。変更するのはかなりシンプルなJSです。 私はこれが倫理的なアプローチではないことを知っていますが、このようにAEMを使用することは、通常のユースケースではありません:)

+0

スリングは、このようにPOSTサーブレットを使用する機能を持っているので、それは倫理的な方法です:)と私は適切なヘッダーでJavaコードを通じてHTTP POSTを呼び出すことでこれを解決しました。 –

+0

あなたはあなたの解決策を精緻化し、他の人を助けるための答えとして追加できますか?もともと私はあなたがHTMLページから投稿しようとしていると思っていました。 – Abhishek