0

私は Node js を使用しています。これが私の応答の作成方法です。

response.writeHead(200, {"Content-Type": "script"});
response.write(JSON.stringify({"test":"fail"}));
response.end();

クライアントは jsonp リクエストを作成し、Safari と同様に Chrome で次のエラーが発生します。

Resource interpreted as Script but transferred with MIME type text/plain.
SyntaxError: Unexpected token ':'

ブラウザーは、受信した応答にアクセスできます。

{"test":"fail"}

構文エラーはどこから来たのですか?

4

1 に答える 1

1

クライアントがリソースを実行しようとしています ( JSON ではなく Scriptとして解釈されます)。は無効な JavaScript です -- コンソールで実行してみてください。Script{"test":fail"}

jsonp は、適切に実行できるように、通常はクライアントによって要求されるコールバックを必要とします。あなたは実際に次のようなことをしているはずです:

response.write(request.query.callback + "(" + JSON.stringify(json) + ")");

これは次のように出力されます

callback12345({"test":"fail"})

これは有効な JavaScript であり、適切に実行されます。

于 2013-08-23T13:29:20.163 に答える