How do oil spills/spots (i.e. in parking lots and streets) create rainbows?
A thin layer of oil on water creates interference effects, just like those seen in a thin soap film. Sunlight reflects from both the top and the bottom of the oil layer and these two reflections can interfere with one another. If the blue/green wavelengths of light interfere destructively on their way to your eye, you will see the oil layer as red. If the green/red wavelengths of light interfere destructively, you will see the oil layer as blue. How you see the oil layer depends on its thickness and the angles of the light.