2

私は asp.net で SqlMembershipProvider を使用していますが、iframe またはフレームを使用しようとするまで正常に動作します。

それらなしでログインすると問題はありませんが、顧客のサイトからウェブサイトをラップしてログインしようとすると、すべてのフィールドがクリアされた元のサイトに戻ってきます。

IE 8 および 9 のサイトでこれを簡単に複製できますが、firefox や chrome では問題ありません。

これを達成する、または回避する別の方法はありますか?

======編集======

クライアントは自社の Web サイトから当社の「ポータル」を呼び出しており、当社のポータルを自社のサイトの一部であるかのようにシームレスに統合したいと考えています。

サイトからポータルをラップする iframe を使用してこれを達成できると考えていましたが、クロス ドメイン cookie の問題 (?) であると読んだところ、ログインでうまく動作しませんでした。

これが物事を明確にするのに役立つことを願っています...

4

3 に答える 3

7

FormsAuthentication.SetAuthCookie を使用して、暗号化された方法で URL に初期認証情報を渡すことができます。

この質問は、Internet Explorer で非常に役立ちます。他のブラウザでも問題ありません。

Cookie がブロックされている/Internet Explorer の IFRAME に保存されていない

Chrome、Firefox、Opera でテストしました (初回は警告が表示されます)。完全に動作しており、問題はありませんが、IE では、私が提供した質問を確認する必要があります。

于 2012-12-17T10:50:01.293 に答える
6

P3P ヘッダーを指定しない限り、Internet Explorer は IFRAME を介して Cookie を送信しません

これを行う最も簡単な方法は、Web.config でカスタム HTTP ヘッダーを指定することです。

  <system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="P3P" value='CP="CAO PSA OUR"'/>

このようにして、コードをこのようなもので台無しにする必要はありません。

この HTTP ヘッダーはCompact P3Pと呼ばれ、私は以前にあなたと同じ状況にあったので、うまくいくはずです。

Safari ブラウザーの場合、ユーザーが次のように IFRAME コンテンツを操作しない限り Cookie を送信しないため、Safari ブラウザーの方が少しトリッキーである可能性があります: Iframe、クロスドメイン Cookie、p3p ポリシー、および safari エラー:必要な偽造防止トークンが指定されていないか、無効でした。あなたの場合、おそらく大きな問題ではないでしょう。

乾杯。

于 2012-12-10T17:21:22.570 に答える
0

DNS にサブドメインをインストールし、IIS にホスト ヘッダーを追加するオプションがある場合は、サブドメインがサイトを指すように設定することで、クロスドメイン セキュリティを回避することができます。

[top] example.com @ customerIP => [iframe] portal.example.com @ yourIP

次の JavaScript をコードに挿入して、ドメインが共有されていることを確認します。

document.domain = "example.com"
于 2012-12-13T23:25:57.113 に答える