web-dev-qa-db-ja.com

Ajaxのリファラーを変更するPOST

Jqueryまたは一般的なJavaScriptを使用して、http ajax呼び出しのヘッダーからリファラーを変更できるかどうかは誰でも知っていますか?

基本的には自分のページから送信したいのですが、別のページからの参照者がいます。どんな情報でもいいでしょう。

21
fmsf

ブラウザは、私が行ったテストでは常にリファラーを上書きします。つまり、ajax呼び出しのリファラーを変更することはできません。

49
fmsf

.setRequestHeader( 'referer', 'foo' )を使用できますが、ブラウザがそれを適切なものに置き換えるだけかどうかはわかりません。

jQueryを介して、.ajax()メソッドはヘッダーも許可します(.get()および.post()は許可しません)

クロスドメインAJAXを実行できず、これを実行しようとしても、一部のブラウザーでXHRセキュリティルールがトリガーされ、要求が完全に停止する可能性があるため、これを実行することにはほとんど意味がないことに注意してください。

6
Mark Kahn

あなたはいつでもこれを使うことができます:

jQuery.ajaxSetup({
    'beforeSend': function(xhr) {xhr.setRequestHeader("header key", "header value")}
})

しかしもちろん、ブラウザはリファラーヘッダーについて異なる意見を持つ可能性があります。これはテストする必要があります:)

3

あなたはjQueryではそれを行うことはできませんが、あなたは[〜#〜] can [〜#〜] fetchでそれを行います

クロスドメインリクエストで機能するかどうかはわかりません(明らかに少なくともCORS権限が必要です)。ただし、この例のように、同じドメイン+別のページで確実に機能します。

fetch("http://example.com",{"referrer":"http://example.com/inbox","body":"{\"format\":\"root\"}","method":"POST"});
2
dmitry.matora