hej、
応答ヘッダーAccess-Control-Allow-Origin
を削除するにはどうすればよいですか?
設定{'origins' : 'asfdasd.com'}
が機能しないようです。
POST /socket.io/?EIO=3&transport=polling&t=1481690658797-5&sid=Dp18NNt_bWPkB4rGAAAP HTTP / 1.1
起源: https :
HTTP / 1.1400不正なリクエスト
コンテンツタイプ:application / json
Access-Control-Allow-Credentials:true
Access-Control-Allow-Origin: https :
日付:2017年2月3日金曜日12:27:42 GMT
接続:キープアライブ
転送エンコーディング:チャンク
同じエラー
@Kenzku @thEpisodeどのバージョンのsocket.ioを使用していますか?
2.x
(https://github.com/socketio/engine.io/pull/452を含む)で修正する必要があります。
こんにちは@darrachequesne返信ありがとう
Googleのすべてのソリューションで問題が解決されなかったため、非常に不満を感じています。GitHubの問題やStackOverflowに投稿しなかったことをお詫びしますが、解決できるすべての詳細を提供したいと思います。 テストするいくつかのURL:
バックエンドURI: http :
Express CORSのテスト: https :
Socket.io CORSのテスト: https ://testcrawlersite.000webhostapp.com(コンソールを参照してください)
テストするプライマリサイト: http :
Socket.ioファイル: http ://crawlerbackend.azurewebsites.net/socket.io.js
app.jsの一部:
`
var path = require( 'path');
var bodyParser = require( 'body-parser');
var cors = require( 'cors');
var express = require( 'express');
var app = express();
// use body parser so we can get info from POST and/or URL parameters
app.use(bodyParser.urlencoded({ extended: true })); // support encoded bodies
app.use(bodyParser.json()); // support json encoded bodies
app.use(cors({ origin: '*' }));
// Settings for CORS
app.use(function (req, res, next) {
// Website you wish to allow to connect
res.header('Access-Control-Allow-Origin', '*');
// Request methods you wish to allow
res.header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
// Request headers you wish to allow
res.header('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
// Set to true if you need the website to include cookies in the requests sent
// to the API (e.g. in case you use sessions)
res.setHeader('Access-Control-Allow-Credentials', false);
// Pass to next layer of middleware
next();
});
var server = app.listen(cross.NormalizePort(process.env.PORT || 3500));
var io = require('socket.io').listen(server, {
log: false,
agent: false,
origins: '*:*',
transports: ['websocket', 'htmlfile', 'xhr-polling', 'jsonp-polling', 'polling']
});
`
問題は解決しました!! @Kenzkuは、このドキュメントを確認してください: https : ください: //github.com/socketio/socket.io /blob/master/lib/index.js#L67そして、Expressを使用しているかどうかを確認します(この例は非常に便利です): https :
素晴らしい! 今すぐ問題を解決できると思います。
@thEpisodeこれは古いスレッドだと思いますが、その最後のリンクが私にとってそれを修正したものでした! Expressチュートリアルのほとんどにはapp.listen(...)
がありますが、 socket.io
を使用する場合は、 index.js
http.listen(...)
を呼び出し、リッスンしないようにする必要があります。 app
オブジェクト、またはこのCORSの問題が発生します。 こんなに小さいこと!
@frewinchristopher私はあなたが上で述べたのと同じパターンに従っていて、ローカルでは正常に動作していますが、リモートではスローします(理由:CORSリクエストは成功しませんでした)。 私が間違っているところ..?
@gowthamyaalコードを教えていただけますか?
ご心配ありがとうございますが、CORSの問題を解決しました。AWSを使用していたため、エラスティックIPとローカルIPとの競合が発生しました。後で、ソケットリスニングIPを0.0.0.0に変更しました。これにより、問題が解決しました。
私は見つけたすべての解決策に従いましたが、まだ実用的な応答を送信していません。 誰かが見てもらえれば、私はとても感謝しています。
`const express = require( 'express')
const http = require( 'http')
const socketIO = require( 'socket.io')
const cors = require( 'cors')
//ホストポート
constポート= 3001
const app = express()
app.use(cors())
//サーバーインスタンス
const server = http.createServer(app)
//サーバーインスタンスを使用してソケットを作成します
const io = socketIO(server)
io.origins( "http:// localhost:3000")
io.on( 'connection'、socket => {
console.log( "ユーザー接続")
socket.on('disconnect', () => {
console.log("User Disconnected")
})
socket.on('send message', (message) => {
io.sockets.emit('send message', message)
})
})
server.listen(port、()=> console.log( Listening on port ${port}
)) `
最も参考になるコメント
@thEpisodeこれは古いスレッドだと思いますが、その最後のリンクが私にとってそれを修正したものでした! Expressチュートリアルのほとんどには
app.listen(...)
がありますが、socket.io
を使用する場合は、index.js
http.listen(...)
を呼び出し、リッスンしないようにする必要があります。app
オブジェクト、またはこのCORSの問題が発生します。 こんなに小さいこと!