

## 現象

クロスドメインの対応で、Access-Control-Allow-Originを書き換えるといいとの記述を見たので、  
以下のように記述してみましたが、変化はありません。

[code]

        var http = require('http'),
      //サーバインスタンス作成
      server = http.createServer(function (req, res) {
          res.setHeader("Access-Control-Allow-Origin", "*");
          res.writeHead(200, {'Content-Type':'text/html'});
          res.end('server connected');
      }),
      io = require('socket.io').listen(server);
      server.listen(9090);//9090番ポートで起動
      ・・・
    
[/code]

## その他補足

  * 現在はAccess-Control-Allow-Originにsocket.io.jsを読み込んでいるサイトのホスト名がセットされています。
  * nginxのリバースプロキシを使用しています
  * nginxの方でもAccess-Control-Allow-Originを書き換える指定を入れましたが、書き換えではなく追記となりました。
  * クロスドメインのエラー
[code]     XML HttpRequest cannot load
http://xxx.xx.xx/socket.io/?EIO=3&transport=polling&t=123456789&sid=USkrjwl.
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://hostsite.aa.bb/' is therefore not allowed access. The response
had HTTP status code 403.

    
[/code]

※パラメーター値、URLはでたらめです。手打ちしたので綴りミスがあるかもしれないです・・・。

問題の個所がわかる方がいらっしゃいましたら、ご教授願います。


CC BY-SA 3.0
2015-12-22T02:18:23.110
20270
2016-11-20T10:42:04.323
2015-12-22T06:54:23.577
9336
9336
question
node.js nginx websocket socket.io
nginx × socket.ioの環境でヘッダーが追加できない


解決しました。  
Nodeサーバーからheaderを追加変更できなかったので、nginxの設定を書き換えました。  
今まで、下記のような書き方をしておりました。

`add_header Access-Control-Allow-Origin *`  
`proxy_set_header Access-Control-Allow-Origin *`

ですが、下記の書き方で「Access-Control-Allow-Origin」が指定できました。  
リバースプロキシ使っているからですかね？

`proxy_set_header Origin *`

ただ、アスタリスク（*）を使った指定だと、また別のエラーが発生したので、今のところホスト名を指定しています。


CC BY-SA 3.0
2015-12-22T06:53:03.280
20282
2015-12-22T06:53:03.280
9336
20270
answer