12

HTTPS経由でajaxGETリクエストを送信するにはどうすればよいですか?

$.getこれをスローします:

XMLHttpRequest cannot load https://********. Origin null is not allowed by Access-Control-Allow-Origin. 

これを機能させるための別の方法または回避策はありますか?

ChromeでURLに移動すると、応答を得ることができます。ajaxリクエストで機能しない理由はわかりません。

4

2 に答える 2

34

同一生成元ポリシーのためにhttps現在アクセスしている場合、ページに対してAJAXリクエストを行うことはできません。http

AJAXリクエストが機能するには、ホストポート、およびスキーム(プロトコル)が同じである必要があります。

元のページが同じホストとスキーム上にあることを確認するか、ターゲットドメインにCORS(クロスオリジンリソースシェアリング)を実装して、この特定のリクエストを許可することができます。

于 2013-03-13T02:25:46.647 に答える
0

[jQueryv。3.3.1]

すべてのリソースとトラフィックがHTTPS経由であるWebアプリケーションがあります。

それでも、 (Chrome出力)が原因で$.ajax()、または特定$.getの、などを送信できないことがわかりました。$.post

次のコンテンツセキュリティポリシーディレクティブに違反しているため、' http:// mywebapp / api / mycall 'への接続を拒否しました:"connect-src'self'"。

これは、HTTPSページがHTTPを介してAJAXリクエストを作成したためであり、HTTPSを強制する方法が見つかりませんでした。

クレイジーなのはそれを修正したことです。呼び出しは、「「 http:// mywebapp / api / mycall$.get('/api/mycall/') 」への接続を拒否しました」という上記のエラーを出力します。これにより、コード内の実際の呼び出しで終了するスラッシュが省略されます。したがって、エラーからは、スラッシュがなかったかのように見えます。

私は複数の呼び出しを行いましたが、呼び出されているURLに終了スラッシュがあると、すべての呼び出しが失敗します。同じものはすべて1つなしで成功します。

したがって$.ajax({ url: '/api/mycall'})、呼び出しは機能しますが、 $.ajax({ url: '/api/mycall/'})機能しません。

于 2018-02-08T12:50:28.830 に答える